![awk, grep 또는 sed 명령을 사용하여 Linux에서 파일의 일부를 별도의 파일로 추출하는 방법](https://linux55.com/image/66838/awk%2C%20grep%20%EB%98%90%EB%8A%94%20sed%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20Linux%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9D%BC%EB%B6%80%EB%A5%BC%20%EB%B3%84%EB%8F%84%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%B6%94%EC%B6%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음과 같은 텍스트 파일이 있습니다.
입력파일 1.txt
.......................
cha21 1 3 5 nar
cha21 2 3 6 piy
cha23 2 3 5 ram
cha23 3 3 3 dam
cha27 5 3 7 pam
................................
"cha21", "cha23" 및 "cha27" 행에 해당하는 5개 열을 모두 3개의 다른 출력 파일(예: cha21.txt, cha23.txt, cha27.txt)로 추출하고 싶습니다.
결과물 파일
cha21.txt
..........
cha21 1 3 5 nar
cha21 2 3 6 piy
......................
cha23.txt
cha23 2 3 5 ram
cha23 3 3 3 dam
...................................
cha27.txt
cha27 5 3 7 pam
...........................
3개의 파일에 대해 grep 명령으로 이 작업을 3번 수행할 수 있습니다... 어쨌든 100개의 출력 파일을 추출해야 하기 때문에 한 번에 모두 수행할 수 있습니다. 즉, 하나의 명령으로 수행할 수 있습니다.
답변1
나는 노력할 것이다
awk '{print >> $1 ".txt" ;}'
어디
print
전체 줄을 인쇄합니다.>> $1 ."txt"
이 줄을 $1로 표시된 파일에 쓰고(추가).txt
추가합니다.
편집하다:
줄, 점이 있는 줄 등을 주석 처리한 경우
노력하다
awk '$1 ~ /cha/ {print >> $1 ".txt" ;}'
"cha"로 시작하는 파일만 채워집니다.
답변2
그것은 간단합니다 awk
:
awk '{print $0 >> $1".txt"}' file1.txt