카탈로그 파일을 분류하고, 파일 이름을 텍스트 줄에 추가하고, 헤더 줄을 제거하는 방법은 무엇입니까? 이렇게 하면 all.txt 파일에 헤더 줄이 1개만 있습니다.
답변1
225개의 텍스트 파일이 있고 각 파일에는 2줄의 텍스트, 헤더 줄 및 숫자 데이터가 있습니다. 각 텍스트 집합의 원본 파일 이름은 데이터가 포함된 행의 첫 번째 열에 포함하려는 파일 이름입니다. 또한 첫 번째 행을 제외한 모든 헤더 행을 제거/(복사 아님)하고 싶습니다. 그러면 맨 위에 머리글 행이 표시됩니다.
내가 올바르게 이해했다면 다음을 원할 것입니다.
for file in *.txt; do echo "$file" $(tail -n1 $file) >> output.txt; done
그런 다음 output.txt를 편집하여 원하는 제목을 만듭니다.
답변2
$ cat a.txt
HEADER
a
b
c
$ cat b.txt
HEADER
1
2
3
$ awk 'NR==1 {print; next} FNR==1 {next} {print FILENAME, $0}' *.txt > all.txt
$ cat all.txt
HEADER
a.txt a
a.txt b
a.txt c
b.txt 1
b.txt 2
b.txt 3
답변3
awk를 사용하여 NR
및 FNR
변수를 사용하여 첫 번째 파일의 헤더 줄을 제외한 모든 줄을 건너뜁니다. 내장 변수에 액세스하여 FILENAME
현재 파일 이름을 나머지 줄 앞에 추가 할 수 있습니다. 예를 들어, 각 파일에 두 개의 헤더 라인이 있는 경우
awk 'NR<3; FNR>2 {print FILENAME,$0}' *.txt > all.txt