如何将awk分隔符设置为字符串或字符?
问题描述:
如何使用一个string
和另一个character
作为awk中的同时分隔符?如何将awk分隔符设置为字符串或字符?
[email protected]:~/AMD_C/SO$ echo "111:222text333:444" | awk -F ':' '{print $2}'
222text333
[email protected]:~/AMD_C/SO$ echo "111:222text333:444" | awk -F "text" '{print $2}'
333:444
因此问题是,我们如何使用“text
”和“:
”作为分隔符的同时,使{print $2}
将打印222
作为输出?考虑上面的例子中的输入。
答
您可以使用简单的交替
$ echo "111:222text333:444" | awk -F "text|:" '{print $2}'
222
它能做什么
-
-F "text|:"
将字段设置分隔符为text
或:
测试
为了确保此正确界定领域
$echo "111:222text333:444" | awk -F "text|:" '{print $1,$2,$3,$4}'
111 222 333 444
编辑
如果你想使用|
作为delimitter,逃避|
作为
$ echo "111:222text333:444|hello" | awk -F '\\||text|:' '{print $1,$2,$3,$4,$5}'
111 222 333 444 hello
谢谢! 1怀疑,如果我需要'|'还有一个字符作为分隔符? – 2014-11-25 14:57:10
例如:echo“111 | 222text333 | 444”| awk -F“text | \ |” '{print $ 3}' awk:warning:转义序列'\ |'视为普通的'|' – 2014-11-25 15:00:38
@ A.M.D好问题。退出'|'并确保将整个事情用单引号括起来。我编辑了答案。希望它有助于:) – nu11p01n73R 2014-11-25 15:01:39