【发布时间】:2018-02-19 14:30:09
【问题描述】:
有没有办法用 awk 打印当前匹配的分隔符?
例如:
awk -F '["RESTART" | "FAILURE" | "WARNING" | [:blank:]]{2}' 'FNR > 4 { for (i=1; i<=NF; i++) print $i;}' file
示例输入
XX XXXX RESTART 6666 XX X
XXXX XXXX WARNING 8888 YYY YYY
XXX XXXX INFORM 7777 XXXX XX
示例输出(必须)
XX
XXXX
RESTART
6666
XX X
XXXX
XXXX
WARNING
8888
YYY YYY
XXX
XXXX
INFORM
7777
XXXX XX
示例输出(现在)
XX
XXXX
6666
XX X
XXXX
XXXX
8888
YYY YYY
XXX
XXXX
INFORM
7777
XXXX XX
我使用超过 2 个空格作为列分隔符,但在某些情况下 (RESTART 6666) 或 (WARNING 8888) 两列没有被两个空格分隔,这就是为什么我必须使用内容 ( RESTART, WARNING) 作为分隔符,但是如果我使用内容作为分隔符,它不会被显示,所以我想显示/打印使用的分隔符(如果它是内容而不是空格)
主要问题是区分一个空格用作列分隔符和一个空格用作一列中的单词分隔符。我不能影响我必须处理的文件。
【问题讨论】:
-
你能用实际的分隔符和实际的文件内容发布问题吗?这些信息不充分
-
添加了更多提示
-
看起来很混乱。发布输入片段和期望的结果
-
您的数据
xxx之间可以有一个空格吗? -
@batMan 是的,查看示例输出
标签: awk