여러 개의 텍스트 파일이 있고 각 파일의 내용은 다음과 같습니다.
attribute1,attribute2,...
1,2,...
열 이름을 설명하는 첫 번째 줄은 모든 파일에서 동일합니다.
파일의 두 번째 행을 연결하고, 원본 파일의 각 행에 대한 파일 이름이 포함된 새 열을 추가하고, 첫 번째 행 중 하나를 새 파일의 첫 번째 행으로 만들고 싶습니다. 예를 들어 필요한 새 파일은 다음과 같습니다.
file,attribute1,attribute2,...
file1,1,2,...
file2,11,12,...
file3,21,22,...
어떻게 해야 하나요?
답변1
파일 이름을 추가하려면 다음을 사용하십시오 awk
.
awk -v OFS=, 'NR==1{print "file", $0};FNR==2{print FILENAME, $0}' file1 file2 ... fileN >outfile
입력의 첫 번째 라인( )이면 NR==1
업데이트된 헤더를 인쇄하고, ||
각 파일의 두 번째 라인( )이면 FNR==2
업데이트된 헤더( ) FILENAME
와 라인( $0
)을 인쇄합니다.
편집하기 전 초기 답변입니다.
당신은 이것을 할 수 있습니다 sed
:
sed -n '1p;n;p' file1 file2 ... fileN >outfile
-n
인쇄를 억제하고 1p
첫 번째 줄을 인쇄한 다음 각 줄(홀수 줄)에 대해 패턴 공간을 지우고 n
확장된 줄(즉, 짝수 줄)을 읽어 p
인쇄합니다.
답변2
{ printf file,; head -n1 <file
grep -n '' ./file* /dev/null|
sed -ne'/^[^:]*:2:/s/:.:/,/p'
} >./new_file
grep
각 줄의 시작 부분에 파일 이름이 표시되며 줄 번호로 선택하는 데도 도움이 됩니다 n
. 그러나 파일 이름에 콜론이 있으면 제대로 작동하지 않을 수 있습니다.
답변3
그리고tail
cat file1.txt && tail -q -n +2 file2.txt file3.txt ..