我有下面这样的文字
Current state of abc : RUNNING Current state of def : RUNNING Current state of ghi : RUNNING
我希望这一行被分割成多行如下
Current state of abc : RUNNING
Current state of def : RUNNING
Current state of ghi : RUNNING
我尝试使用tr命令,如tr ' ' '\n'
,但它在每个空格后打印行。
4条答案
按热度按时间uoifb46i1#
继续
tr
思想:或者sed,每6个单词后插入一行换行符
在perl中也有同样的想法
或GNU grep for
-o
和\S/\s
:或GNU awk for multi-char
RS
andRT
and\S/\s
:eblbsuwk2#
将单个空格视为严格的记录分隔符。每一个字都是一个字,而不是一个字。我们打印了所有记录。如果不是每六个记录,我们就在它后面打印一个空格。如果是每六条记录,我们在它后面打印一行换行符。
niwlg2el3#
使用任何版本的
awk
。使用awk
中显示的示例,您可以尝试以下操作。这里使用正则表达式(^| )(\S+\s){5}\S+(\s|$)
来解决这个问题。jutyujz04#
我将利用GNU
AWK
来完成这项任务,如下所示,让file.txt
内容然后
给出输出
免责声明:该解决方案假设每行中的场的数量总是可被6整除,如果不是这种情况,则不使用它。说明:我使用
for
循环遍历行中的字段,打印字段值($i
),后跟输出字段分隔符(默认值:如果列数不能被6整除(即除以6的余数不为零)否则输出行分隔符(默认值:我使用printf
而不是print
,因为前者不会自动添加跟踪换行符。