6행부터 끝까지 모든 *.txt 파일을 sed해야 합니다. 모든 결과는 결과 앞에 각 파일 이름이 포함된 새로운 단일 파일에 있어야 합니다.
예: 다른 txt 파일의 경우 결과는 세 번째 줄부터 끝까지 단일 파일이어야 합니다.
file 1
3
4
5
file 2
3
4
5
file 3
3
4
5
답변1
GNU 사용 sed
:
sed -s '1F;6,$!d' -- *.txt > output
이식 가능하게는 다음을 사용할 수 있습니다 awk
.
awk 'FNR == 1 {print FILENAME}; FNR>=6' ./*.txt > output
(두 경우 모두 숨김 파일은 제외됩니다.)
빈 파일은 참조되지 않지만 6줄 미만의 파일은 참조됩니다. 이 말을 듣고 싶지 않다면 다음과 같이 하세요.
sed -s '6F;6,$!d' -- *.txt > output
awk 'FNR == 6 {print FILENAME}; FNR>=6' ./*.txt > output
또는 모든 파일을 보려면:
for f in *.txt; do
printf '%s\n' "$f"
tail -n +6 < "$f"
done > output
GNU를 사용하면 tail
다음을 수행할 수도 있습니다.
$ tail -vn +6 -- *.txt
==> a.txt <==
6
7
8
9
10
==> b.txt <==
6
7
8
9
10