![Unix - 파일의 모든 줄에 텍스트를 추가하는 방법(헤더 줄/첫 번째 줄 제외)](https://linux55.com/image/49810/Unix%20-%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EC%A4%84%EC%97%90%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95(%ED%97%A4%EB%8D%94%20%EC%A4%84%2F%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EC%A4%84%20%EC%A0%9C%EC%99%B8).png)
다음 데이터가 포함된 abc.txt 파일이 있습니다(실제 데이터에는 약 200개 정도의 많은 레코드가 있습니다).
눈 | 이름
1 |
질
3 |
이제 내 파일이 다음과 같이 보이도록 텍스트를 추가하려면 어떻게 해야 합니까?
스노우|이름|장소
1|잭|파리
2|질|파리
3|6월|파리
전역 교체를 시도했지만 첫 번째 줄에 다른 텍스트가 추가되어야 합니다. 그러니 저를 도와주세요.
답변1
여기에는 세 가지 옵션이 있습니다.
awk 및 그 변형(
gawk
등mawk
):awk '{if(NR==1){print $0,"| Place"} else{print $0,"| Paris"}}' file.txt
진주:
perl -lne '$.==1 ? print "$_ | Place" : print "$_ | Paris"' file.txt
sed
sed '1 s/$/ | Place/; 1! s/$/ | Paris/' file.txt
답변2
스크립트된 "내부" 파일 편집의 경우 다음을 사용하십시오 ex
.
printf '%s\n' '1s/$/ | Place/' '2,$s/$/ | Paris/' x | ex abc.txt
printf
에게 명령을 내립니다ex
.1s
첫 번째 줄에서만 교체를 수행하십시오.2,$s
다른 모든 라인에 대해 교체를 수행합니다.x
저장 및 종료.
$
정규식에서는 "줄 끝"을 의미합니다 .