awk到for循环中的多个变量
awk to multiple variable in for loop
想要读取第 6 行 (var=i)、第 9 行 (var=j)、第 12 行 (var=k) 然后输出为第一行
然后增加 10 行(i+10;j+10;k+10)并输出为第二行,依此类推...
Input.txt
MN
LIST
DETAILS
AAAA BBBB CCCC
123421751116849 119865688385 IDLE
DATE TIME DDDD
150203 161044 123-42-50300-14481
EEEE
111394052866500
DETAILS
AAAA BBBB CCCC
123421825027128 119698116932 IDLE
DATE TIME DDDD
150204 183507 123-42-3200-10793
EEEE
352708042150790
DETAILS
AAAA BBBB CCCC
123421893844511 118675320014 IDLE
DATE TIME DDDD
150204 222245 123-42-50000-1823
EEEE
352663056076930
DETAILS
AAAA BBBB CCCC
预计Output.txt
AAAA、BBBB、CCCC、日期、时间、DDDD、EEEE
123421751116849,119865688385,IDLE,150203,161044,123-42-50300-14481,111394052866500
123421825027128,119698116932,IDLE,150204,183507,123-42-3200-10793,352708042150790
123421893844511,118675320014,IDLE,150204,222245,123-42-50000-1823,352663056076930
我试过下面的命令,但不完整
awk 'BEGIN { FS" "; OFS=","} { for (i=6;j=9;k=12;i<=NR;j<=NR;k<=NR;i+10;j+10;k+10) print $i,$j,$j }' Input.txt
寻找您的建议!!!
我会用
awk -v RS=DETAILS -v OFS=, 'NR == 2 { print , , , , , , } NR != 1 { print , , , , , , }' filename
诀窍是将文件拆分为由 DETAILS
而非换行符分隔的记录,然后从这些记录中挑选出适当的字段。 NR == 2
块仅用于生成 header 行。 NR == 1
是第一个 DETAILS
之前的绒毛,因此被忽略。
想要读取第 6 行 (var=i)、第 9 行 (var=j)、第 12 行 (var=k) 然后输出为第一行 然后增加 10 行(i+10;j+10;k+10)并输出为第二行,依此类推...
Input.txt
MN
LIST
DETAILS
AAAA BBBB CCCC
123421751116849 119865688385 IDLE
DATE TIME DDDD
150203 161044 123-42-50300-14481
EEEE
111394052866500
DETAILS
AAAA BBBB CCCC
123421825027128 119698116932 IDLE
DATE TIME DDDD
150204 183507 123-42-3200-10793
EEEE
352708042150790
DETAILS
AAAA BBBB CCCC
123421893844511 118675320014 IDLE
DATE TIME DDDD
150204 222245 123-42-50000-1823
EEEE
352663056076930
DETAILS
AAAA BBBB CCCC
预计Output.txt
AAAA、BBBB、CCCC、日期、时间、DDDD、EEEE
123421751116849,119865688385,IDLE,150203,161044,123-42-50300-14481,111394052866500
123421825027128,119698116932,IDLE,150204,183507,123-42-3200-10793,352708042150790
123421893844511,118675320014,IDLE,150204,222245,123-42-50000-1823,352663056076930
我试过下面的命令,但不完整
awk 'BEGIN { FS" "; OFS=","} { for (i=6;j=9;k=12;i<=NR;j<=NR;k<=NR;i+10;j+10;k+10) print $i,$j,$j }' Input.txt
寻找您的建议!!!
我会用
awk -v RS=DETAILS -v OFS=, 'NR == 2 { print , , , , , , } NR != 1 { print , , , , , , }' filename
诀窍是将文件拆分为由 DETAILS
而非换行符分隔的记录,然后从这些记录中挑选出适当的字段。 NR == 2
块仅用于生成 header 行。 NR == 1
是第一个 DETAILS
之前的绒毛,因此被忽略。