我希望,所选择的文件行在输出文件中并排打印并用空格分隔。这就是我到目前为止所做的,
用于SAC *中的文件
DO
awk 'FNR==2 {print $4}' $file >>exp
awk 'FNR==3 {print $4}' $file >>exp
awk 'FNR==4 {print $4}' $file >>exp
awk 'FNR==5 {print $4}' $file >>exp
awk 'FNR==7 {print $4}' $file >>exp
awk 'FNR==8 {print $4}' $file >>exp
awk 'FNR==24 {print $0}' $file >>exp
done
我的输出是:
XV
AMPY
BHZ
2012-08-15T08:00:00
2013-12-31T23:59:59
我想要输出
XV AMPY BHZ 2012-08-15T08:00:00 2013-12-31T23:59:59
答案 0 :(得分:0)
首先是测试数据(只有9行,然后):
$ cat file
1 2 3 14
1 2 3 24
1 2 3 34
1 2 3 44
1 2 3 54
1 2 3 64
1 2 3 74
1 2 3 84
1 2 3 94
然后是awk。在shell中不需要for
循环,awk可以处理多个文件:
$ awk '
BEGIN {
ORS=" "
a[2];a[3];a[4];a[5];a[7];a[8] # list of records for which $4 should be outputed
}
FNR in a { print $4 } # output the $4s
FNR==9 { printf "%s\n",$0 } # replace 9 with 24
' file file # ... # the files you want to process (SAC*)
24 34 44 54 74 84 1 2 3 94
24 34 44 54 74 84 1 2 3 94