sedgiải pháp của araga là tốt nhất, vâng. Nhưng tôi vì tôi thích head|tailcắt một chút , có một head|tailgiải pháp hỗ trợ nhiều tệp chứ không chỉ một tệp input.dat. Sử dụng vòng lặp for, thay vì chuyển danh sách các tệp sang sed, cũng giúp bạn dễ dàng thực hiện các thao tác khác với tệp trước / sau khi trích xuất dòng thứ hai bằng 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
Phiên bản đa dòng nhận xét:
NB: mã dưới đây sẽ chạy. Chúng tôi có thể tự do đặt một linebreak sau một |, &&hoặc ||, và tiếp tục chỉ huy của chúng tôi trên dòng tiếp theo; chúng tôi thậm chí có thể đặt ý kiến ở giữa. Tôi đã dành nhiều năm không biết điều này (và không thực sự nhìn thấy nó ở bất cứ đâu). Kiểu này ít hữu ích hơn tại dấu nhắc tương tác, nhưng dọn sạch các tệp script không có kết thúc.
# 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