在字符串上使用 awk

在字符串上使用 awk

我有兴趣在终端中列出 csv 文件中第一个字符为 'A' 的行。有没有一种快速的方法可以做到这一点?

答案1

假设您有以下文件:

~$ cat f
1,AA,2
2,BB,2
3, AA, 1
C, BA, 1

您可以简单地使用 grep:

~$ grep "^[^,], *A" f
1,AA,2
3, AA, 1

但使用具有相同正则表达式的 awk 是可能的:

~$ awk '/^[^,], *A/' f
1,AA,2
3, AA, 1

更好的方法是使用字段分隔符 ( -F',') 并测试第二个字段:

~$  awk -F',' '$2~/^ *A/' f
1,AA,2
3, AA, 1

并使用 sed:

~$ sed -n '/^[^,], *A/p' f
1,AA,2
3, AA, 1

请注意,如果带引号的字段内有逗号,则这些命令将不起作用,例如:

"1,A",AA,A
'1,A',AA,A

如果是这种情况,您将不得不使用类似的程序csv报价,ocaml-csv,或者你自己的……

相关内容