AWK csv 操作

AWK csv 操作

我有一个 csv 文件,其中包含以下内容:

abc;!!!!;22
abc;!!!!;23
23;!!!!!;22

现在我想删除第三列中包含 23 的每一行。

因为第一个有可能是23。它应该只检查第三列中的匹配项。

我更喜欢 awk 解决方案,因为我真的很想学习它,但如果有人能告诉我如何使用 sed 做到这一点,我会印象深刻!

它应该与我的这个坏例子类似。

awk -F ";" (if $3="23") delete Line

答案1

另一种变体是“如果 $3 与 23 不同,则打印它”

awk -F';' '$3 != 23' file

答案2

对您的方法进行轻微修改可能已经有效(未经测试):

awk -F ";" '$3 ~ /23/ {next} 1' file

“包含”的意思是“有,除其他外”。如果您的意思是“等于”,请使用== 运算符。

答案3

与 sed

sed '/;23$/d' infile

如果可以有超过 3 列

sed '/\([^;]*;\)\{2\}23\(;\|$\)/d' infile

或者使用 ERE

sed -E '/([^;]*;){2}23(;|$)/d' infile

相关内容