Shell-Script

awk - 將多個 .dat 文件的第二行輸出到一個文件

  • January 6, 2019

我有多個文件,例如:(實際上我有 80 個)

文件1.dat

2 5

6 9

7 1

文件2.dat

3 7

8 4

1 3

我想最終得到一個包含所有第二行的文件。IE

輸出.dat

6 9

8 4

到目前為止,我所擁有的內容會循環文件名,但隨後會覆蓋它之前的文件。例如,上述文件的輸出只是

8 4

我的 shell 腳本如下所示:

post.sh

TEND = 80

TINDX = 0

while [ $TINDX - lt $TEND]; do

awk '{ print NR==2 "input-$TINDX.dat > output.dat

TINDX = $((TINDX+1))

done

刪除while循環並使用外殼大括號擴展以及FNR內置awk變數:

awk 'FNR==2{print $0 > "output.dat"}' file{1..80}.dat

sed就足夠了:

sed -sn 2p file{1..80}.dat > output.dat

-s需要選項來列印每個文件的第 2 行,否則只會列印第一個文件的第 2 行。

引用自:https://unix.stackexchange.com/questions/178862