Mee*_*han 2 unix bash shell awk sed
我有如下文字
Current state of abc : RUNNING Current state of def : RUNNING Current state of ghi : RUNNING
Run Code Online (Sandbox Code Playgroud)
我希望将这一行分成多行,如下所示
Current state of abc : RUNNING
Current state of def : RUNNING
Current state of ghi : RUNNING
Run Code Online (Sandbox Code Playgroud)
我尝试使用 tr 命令tr ' ' '\n',但它会在每个空格后打印行。
继续思考tr:
tr -s ' ' '\n' | paste -d ' ' - - - - - -
# or, handle tabs too
tr -s '[:space:]' '\n' | paste -d ' ' - - - - - -
Run Code Online (Sandbox Code Playgroud)
或者 sed,每 6 个单词后插入一个换行符
sed -E 's/([^[:space:]]+[[:space:]]+){6}/&\n/g'
Run Code Online (Sandbox Code Playgroud)
Perl 中同样的想法
perl -pe 's/(\S+\s+){6}/$&\n/g'
Run Code Online (Sandbox Code Playgroud)
或 GNU grep for-o和\S/\s:
grep -Eo '(\S+\s+){5}\S+'
Run Code Online (Sandbox Code Playgroud)
或 GNU awk 用于多字符RSand RTand \S/\s:
awk -v RS='(\\S+\\s+){5}\\S+' 'RT{print RT}'
Run Code Online (Sandbox Code Playgroud)