数据文件-data.txt:
ABC "I am ABC" 35 DESC
DEF "I am not ABC" 42 DESC
cat data.txt | awk '{print $2}'
将导致“I”而不是被引用的字符串
如何使 awk 忽略引号内的空格并认为它是一个单独的标记?
最佳答案
另一种选择是使用 FPAT
变量,它定义了描述每个字段内容的正则表达式。
将此 AWK 脚本保存为 parse.awk
:
#!/bin/awk -f
BEGIN {
FPAT = "([^ ]+)|(\"[^\"]+\")"
}
{
print $2
}
使用 chmod +x ./parse.awk
使其可执行并将您的数据文件解析为 ./parse.awk data.txt
:
"I am ABC"
"I am not ABC"
关于bash - Awk 将双引号字符串视为一个标记并忽略其间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619619/