gpt4 book ai didi

regex - 过滤 CSV 文件中的数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:46 25 4
gpt4 key购买 nike

我有这种格式的 CSV 文件

a,b,c,d,e,f,no disk detected
a,b,c,d,e,f,disk run into error
a,b,c,d,e,f,no memory in the server
a,b,c,d,e,f,memory has correctable errors

在最后一列,我需要搜索这个词

磁盘并替换为磁盘错误内存并将其替换为内存错误那部分我已经弄明白了

 cat filename.csv |awk -F "," '{print $NF}' |sed 's/^.*disk.*$/disk error/'  |sed 's/^.*memory.*$/memory error/' 

现在我需要帮助的部分是当 sed 替换这个字符串时,是否可以写入同一个文件(filename.csv)或生成一个包含所有列 + 更新列的新文件,所以新文件将如下所示

 a,b,c,d,e,f,disk error
a,b,c,d,e,f,disk error
a,b,c,d,e,f,memory error
a,b,c,d,e,f,memory error

最佳答案

使用 sed 更容易:

sed -E 's/^(.+,).*(disk|memory).*$/\1\2 error/' file.csv

a,b,c,d,e,f,disk error
a,b,c,d,e,f,disk error
a,b,c,d,e,f,memory error
a,b,c,d,e,f,memory error

要在同一文件中进行内联更改,请使用:

sed -i.bak -E 's/^(.+,).*(disk|memory).*$/\1\2 error/' file.csv

== 详情==

搜索正则表达式:

  • ^:开始
  • (.+,):贪婪匹配直到最后一个逗号并将其捕获到第 1 组
  • .*(disk|memory):在匹配diskmemory之前匹配0个或多个字符,捕获到group#2
  • .*$:匹配结束前0个或多个字符

替换模式:

  • \1:向后引用第 1 组以将文本放置到最后一个逗号后面
  • \2错误:追加磁盘错误内存错误

关于regex - 过滤 CSV 文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com