我希望在 awk
中使用字符串 (BIRCH) 作为字段分隔符来打印第二个字段。我正在尝试以下命令:
cat tmp.log|awk -FBirch '{ print $2}'
正在打印以下输出:
irch2014/06/23,04:36:45,3,1401503,xml-harlan,P12345-1,temp,0a653356353635635,temp,L,Success
期望的输出:
2014/06/23,04:36:45,3,1401503,xml-harlan,P12345-1,temp,0a653356353635635,temp,L,Success
tmp.log 文件的内容。
-bash-3.2# cat tmp.log
Dec 05 13:49:23 [x.x.x.x.180.100] business-log-dev/int [TEST][0x80000001][business-log][info] mpgw(Test): trans(8497187)[request][10.x.x.x]:
Birch2014/06/23,04:36:45,3,1401503,xml-harlan,P12345-1,temp,0a653356353635635,temp,L,Success
我做错了什么吗?
- 操作系统:Solaris10
- shell :Bash
尝试了以下答案之一中建议的命令。我得到了所需的输出,但顶部有一个额外的空行。如何从输出中消除这种情况?
-bash-3.2#/usr/xpg4/bin/awk -FBirch '{print $2}' tmp.log
2014/06/23,04:36:45,3,1401503,xml-harlan,P12345-1,temp,0a653356353635635,temp,L,成功
最佳答案
最初,我建议在“Birch”周围加上引号(-F'Birch'
),但实际上,我认为这不会有任何区别。
我对使用 Solaris 没有任何经验,但您可能还想尝试使用 nawk
(“new awk”)而不是 awk
。
nawk -FBirch '{print $2}' file
如果这有效,您可能需要考虑创建一个别名,以便始终使用具有更多功能的较新版本的 awk。
您可能还想尝试使用 /usr/xpg4/bin
目录中的 awk 版本,它是 POSIX 兼容的实现,因此应该支持多字符 FS
:
/usr/xpg4/bin/awk -FBirch '{print $2}' file
如果您只想打印具有多个字段的行,可以添加一个条件:
/usr/xpg4/bin/awk -FBirch 'NF>1{print $2}' file
当有多个字段时,仅打印第二个字段。
关于bash - 在 Solaris 上的 awk 中使用多字符字段分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399845/