sed/awk/perl:找到一个正则表达式,复制该行的5列并粘贴到下一行的开头 [英] sed/awk/perl: find a regex, copy 5 columns of this line and paste to it at the beginning of the next lines
本文介绍了sed/awk/perl:找到一个正则表达式,复制该行的5列并粘贴到下一行的开头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
057 - - No adod3 stptazlqn 10 753
tlm 10 027
stp 10 021
12 - - No azad1
bbcz 30 12
03085 - - No azad1 azad1222
xxaz 1 12
azzst 1 12
hss 2 12
我需要做的是:
- 查找以数字[0-9]开头的行.
- 复制前5列,并用空格''隔开.
- 将其粘贴在不以数字开头的下一行中.
057 - - No adod3 stptazlqn 10 753
057 - - No adod3 tlm 10 027
057 - - No adod3 stp 10 021
12 - - No azad1
12 - - No azad1 bbcz 30 12
03085 - - No azad1 azad1222
03085 - - No azad1 xxaz 1 12
03085 - - No azad1 azzst 1 12
03085 - - No azad1 hss 2 12
非常感谢您提前提供帮助.
Thanks for any help in advance.
干杯, 色拉
推荐答案
awk
进行救援!
$ awk '{if($1+0==$1) p=$1 FS $2 FS $3 FS $4 FS $5; else $0=p FS $0}1' file | column -t
057 - - No adod3 stptazlqn 10 753
057 - - No adod3 tlm 10 027
057 - - No adod3 stp 10 021
12 - - No azad1
12 - - No azad1 bbcz 30 12
03085 - - No azad1 azad1222
03085 - - No azad1 xxaz 1 12
03085 - - No azad1 azzst 1 12
03085 - - No azad1 hss 2 12
此处FS
是字段分隔符,默认情况下是空白.数字测试是通过零加法完成的;管道到column
进行漂亮的格式化.末尾的1
是打印行($0
变量)的简写
here FS
is the field separator by default is the white space. Number test is done with zero addition; pipe to column
for pretty formatting. The 1
at the end is the shorthand for printing the line ($0
variable)
这篇关于sed/awk/perl:找到一个正则表达式,复制该行的5列并粘贴到下一行的开头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文