Vic*_*cky 0 unix shell awk sed
我有一个包含数据的文件
180607 093423 123.12.23.122 133
180607 121234 125.25.45.221 153
190607 084849 202.178.23.4 44
190607 084859 164.78.22.64 12
200607 012312 202.188.3.2 13
210607 084849 202.178.23.4 34
210607 121435 202.178.23.4 32
210607 132423 202.188.3.2 167
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
180607 180607 190607 190607 200607 210607 210607 210607
093423 121234 084849 084859 012312 084849 121435 132423
123.12.23.122 125.25.45.221 202.178.23.4 164.78.22.64 202.188.3.2 202.178.23.4 202.178.23.4 202.188.3.2
133 153 44 12 13 34 32 167
Run Code Online (Sandbox Code Playgroud)
请建议
在awk中,顺序应该与预期输出相反,反转(编辑:OP在此解决方案后将反转数据集恢复正常.我将其保留为教育目的.):
$ awk '{ for((nf=NF)&&i=1;i<=NF;i++) # every field of every record
a[i]=$i OFS a[i] } # prepend new data to previous data in a
END { # in the end
for(i=1;i<=nf;i++) #
print a[i] }' file # output data
180607 180607 190607 190607 200607 210607 210607 210607
093423 121234 084849 084859 012312 084849 121435 132423
123.12.23.122 125.25.45.221 202.178.23.4 164.78.22.64 202.188.3.2 202.178.23.4 202.178.23.4 202.188.3.2
133 153 44 12 13 34 32 167
Run Code Online (Sandbox Code Playgroud)
如果订单不应该反转但只需要转置,请更改a[i]=$i OFS a[i]
为a[i]=a[i] $i OFS
(未经测试).