Unix 如何使用Awk在双引号下使用列值筛选行

Unix 如何使用Awk在双引号下使用列值筛选行,unix,awk,Unix,Awk,我想得到那些$1==AA的行 "A","B",123,"C","AAB" "A","BB",234,"CC","BA" "AA","B",123,"CC","CBB" "AA","BB",213,"C","CCA" 但它不起作用。如果数据是双引号中的而不是,则该选项有效 遵循awk可能会对您有所帮助 awk 'BEGIN { FS = ","; OFS = FS;} {if ($1=="AA") print}' 解决方案二: 只需将文本“与转义字符匹配。这是用于匹配第一列的文本“AA”的直

我想得到那些$1==AA的行

"A","B",123,"C","AAB"
"A","BB",234,"CC","BA"
"AA","B",123,"CC","CBB"
"AA","BB",213,"C","CCA"

但它不起作用。如果数据是双引号中的而不是,则该选项有效

遵循
awk
可能会对您有所帮助

 awk 'BEGIN { FS = ","; OFS = FS;} {if ($1=="AA") print}'
解决方案二:


只需将文本
与转义字符匹配。这是用于匹配第一列的文本
“AA”
的直接筛选器。由于
awk
基于
模式{action}
工作,因此条件匹配可查看第一列是否为
“AA”“
无需使用显式
{print}

如果满足该行的条件,
awk
将保留一个条件,即
awk 1 file
,在这种情况下打印该行

awk -F"[\",]" '$2=="AA"'  Input_file
此外,您还可以通过将匹配字符串放在变量中的单引号下并让它与变量匹配来避免转义

awk -v FS=, '$1=="\"AA\""' file

如果可以进行文本匹配,为什么要这样做呢?请不要将
作为字段分隔符。您也可以使用
grep'^“AA”,“
。但在基于字段的处理中,最好考虑awk
awk -v FS=, '$1=="\"AA\""' file
awk -v FS=, -v m='"AA"' '$1==m' file