sed
solusi aragaer adalah yang terbaik, ya. Tapi saya karena saya menikmati sedikit head|tail
pemotongan, punya head|tail
solusi yang mendukung banyak file, bukan hanya satu input.dat
. Menggunakan for-loop, alih-alih meneruskan daftar file ke sed, juga membuatnya lebih mudah untuk melakukan hal lain dengan file sebelum / sesudah mengekstraksi baris kedua dengan sed.
# empty output.dat first
rm output.dat
# have a one-liner
for file in *.dat; do head -2 $file | tail -1 >> output.dat; done
Versi multi-baris yang banyak dikomentari:
NB: kode di bawah ini akan berjalan. Kita bebas untuk menempatkan linebreak setelah |
, &&
atau ||
, dan melanjutkan perintah kami pada baris berikutnya; kami bahkan dapat memberikan komentar di antaranya. Saya menghabiskan waktu bertahun - tahun untuk tidak mengetahui hal ini (dan tidak benar-benar melihatnya di mana pun). Gaya ini kurang berguna pada prompt interaktif, tetapi membersihkan file skrip tanpa akhir.
# empty output.dat first
rm output.dat
for file in *.dat; do
# file -> lines 1 and 2 of file
head -2 $file |
# lines 1 and 2 of file -> line 2 of file >> appended to output.dat
tail -1 >> output.dat
done
awk 'FNR==2' file{1..80}.dat > output.dat