所以我有一个文件,我只想从中获取某些行,但不幸的是这些行中的字符串没有用引号括起来。如何根据第二列值过滤这些行? 我有:
string a,string b,string c,string d,string e
string 1,string 2,string 3,string 4,string 5
string f,string b,string h,string i,string j
string 6,string 7,string 8,string 9,string 0
我只想要一个新文件:
string a,string b,string c,string d,string e
string f,string b,string h,string i,string j
我正在尝试使用命令:
awk -F '","' 'BEGIN {OFS=","} { if (toupper($2) == "STRING B") print }' input.csv > output.csv
答案 0 :(得分:2)
如果您使用-F,
而非-F '","'
,则代码应该有效。一个更惯用的方法是
awk -F, -v OFS=, 'toupper($2) == "STRING B"' input.csv
在awk代码中,没有相关操作的条件意味着如果条件为真,则执行默认操作(打印),这样可以减少绒毛的效果。
答案 1 :(得分:0)
在设置FS值时,您不需要包含双引号。
$ awk -F, 'BEGIN {OFS=","} { if (toupper($2) == "STRING B") print }' file
string a,string b,string c,string d,string e
string f,string b,string h,string i,string j