awk, grep 또는 sed 명령을 사용하여 Linux에서 파일의 일부를 별도의 파일로 추출하는 방법

awk, grep 또는 sed 명령을 사용하여 Linux에서 파일의 일부를 별도의 파일로 추출하는 방법

다음과 같은 텍스트 파일이 있습니다.

입력파일 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

관련 정보