첫 번째 열 awk에 따라 파일을 분할하는 방법

수행해야 할 작업의 예를 보여줍니다.

입력:

name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd

헤더를 유지 하고 첫 번째 열에서 같은 이름 으로 파일로 분할해야합니다 . 첫 번째 열에 따라 출력 파일의 이름을 계속 지정해야합니다.

산출:

파일 1 : john.tsv

name value1 value2 value3
john xxxxx yyyyy qqqqqq
john xxxxx ddddd vvvvvv
john mmmmm jjjjj llllll

파일 2 : paul.tsv

name value1 value2 value3
paul xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd

INPUT 및 OUTPUT 파일은 탭으로 구분됩니다. 헤더는 항상 동일합니다.

내 솔루션은 매우 복잡하고 느립니다.

head -1 INPUT > header

awk 'NR>1{print $1}' | sort | uniq > names

while read line

 do grep $line INPUT | cat header - > $line.tsv

< names

done
에드 모튼

지금까지 게시 된 모든 답변에는 취약하거나 이식 할 수없는 문제가 있습니다 (예 : 결과를 확인하지 않고 getline 사용, 출력 리디렉션의 괄호로 묶지 않은 오른쪽, gawk 특정 기능 사용, 각 출력 파일을 닫지 않음) 완료되면) 및 / 또는 불필요하게 복잡합니다.

헤더를 유지하면서 처음 2 개 열을 기준으로 입력 파일을 정렬하는 방법은 다음과 같습니다.

$ awk -v OFS='\t' '{print (NR>1), $0}' file | sort | cut -f2-
name value1 value2 value3
john mmmmm jjjjj llllll
john xxxxx ddddd vvvvvv
john xxxxx yyyyy qqqqqq
paul ccccc ccccc dddddd
paul xxxxx yyyyy qqqqqq

헤더 행을 포함하여 입력을 강력하고 이식 가능하며 효율적으로 인쇄하여 첫 번째 열을 기준으로 명명 된 파일을 분리하려면 다음과 같이하십시오.

$ cat tst.awk
NR==1 { hdr=$0; next }
$1 != prev {
    close(out)
    out = $1 ".tsv"
    print hdr > out
    prev = $1
}
{ print > out }

따라서 모두 합치면 다음과 같습니다.

awk -v OFS='\t' '{print (NR>1), $0}' file | sort | cut -f2- | awk -f tst.awk

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

첫 번째에 따라 세 번째 열을 표시하고 두 번째 열은 변경하지 않는 방법

분류에서Dev

파이썬 목록을 첫 번째 열의 값에 따라 3 개의 개별 목록으로 분할하는 방법은 무엇입니까?

분류에서Dev

Bash :: 파일의 첫 번째 숫자 열에 따라 정렬하는 방법은 무엇입니까?

분류에서Dev

첫 번째 열과 두 번째 열의 차이에 따라 데이터 프레임의 세 번째 열에서 값을 얻는 방법은 무엇입니까?

분류에서Dev

Microsoft Excel 첫 번째 행을 열로 변환 한 다음 첫 번째 열에 따라 나머지 행을 정렬하는 방법

분류에서Dev

Microsoft Excel 첫 번째 행을 열로 변환 한 다음 첫 번째 열에 따라 나머지 행을 정렬하는 방법

분류에서Dev

두 번째 열의 번호에 따라 첫 번째 열에서 n 개의 첫 번째 문자를 선택하는 방법

분류에서Dev

두 번째 열의 구분 기호에 따라 CSV 파일의 단일 행을 여러 행으로 분할하는 방법

분류에서Dev

원본 파일의 첫 번째 열 값에 따라 새 파일을 구성하려면 어떻게합니까?

분류에서Dev

두 번째 열에 키가있는 파일의 첫 번째 열을 4 줄마다 정렬하는 방법

분류에서Dev

두 번째 열의 첫 번째 숫자로 파일을 더 작게 분할하는 방법

분류에서Dev

Python의 csv 파일에서 첫 번째 열의 값을 기준으로 행을 구분하는 방법

분류에서Dev

위치 두 번째 양식을 설정하는 방법은 첫 번째 양식에 따라 다릅니다.

분류에서Dev

AWK-파일의 첫 번째 열이 가리키는 파일의 내용을 가져 오는 방법

분류에서Dev

각 섹션의 첫 번째 줄의 네 번째 값에 따라 파일 섹션을 정렬하는 방법은 무엇입니까?

분류에서Dev

awk를 사용하여 끝까지 첫 번째 열을 제외한 csv 파일을 인쇄하는 방법

분류에서Dev

awk를 사용하여 첫 번째 열과 두 번째 열의 첫 번째 줄을 단일 열로 인쇄하는 방법은 무엇입니까?

분류에서Dev

Bootstrap에서 두 번째 행의 두 번째 열을 동일한 첫 번째 열 또는 첫 번째 행에 정렬하는 방법은 무엇입니까?

분류에서Dev

첫 번째 <select> 옵션에 따라 두 번째 <select>를 채우는 방법

분류에서Dev

파일 A에서 파일 b로 첫 번째 열을 복사하는 방법은 무엇입니까?

분류에서Dev

첫 번째 열에 헤더 이름을 추가하는 방법

분류에서Dev

해당 파일의 첫 번째 값의 조건에 따라 Linux에서 출력 파일을 정렬하는 방법은 무엇입니까?

분류에서Dev

문자열 내에서 숫자를 분할하는 방법 (첫 번째 위치)?

분류에서Dev

배열 [값 및 파일 이름]으로 만들고 첫 번째 파일 등에 대한 첫 번째 값을 쓰는 방법

분류에서Dev

행렬 파일의 첫 번째 열에 문자열을 추가하는 방법은 무엇입니까?

분류에서Dev

열 n과 파일의 첫 번째 줄에 문자열을 추가하는 방법은 무엇입니까?

분류에서Dev

열 수에 따라 파일을 분할하는 방법은 무엇입니까?

분류에서Dev

다른 열에서 첫 번째, 두 번째 및 세 번째 값을 선택하는 방법-Ms Access

분류에서Dev

열을 첫 번째 숫자로 구분하는 방법

Related 관련 기사

  1. 1

    첫 번째에 따라 세 번째 열을 표시하고 두 번째 열은 변경하지 않는 방법

  2. 2

    파이썬 목록을 첫 번째 열의 값에 따라 3 개의 개별 목록으로 분할하는 방법은 무엇입니까?

  3. 3

    Bash :: 파일의 첫 번째 숫자 열에 따라 정렬하는 방법은 무엇입니까?

  4. 4

    첫 번째 열과 두 번째 열의 차이에 따라 데이터 프레임의 세 번째 열에서 값을 얻는 방법은 무엇입니까?

  5. 5

    Microsoft Excel 첫 번째 행을 열로 변환 한 다음 첫 번째 열에 따라 나머지 행을 정렬하는 방법

  6. 6

    Microsoft Excel 첫 번째 행을 열로 변환 한 다음 첫 번째 열에 따라 나머지 행을 정렬하는 방법

  7. 7

    두 번째 열의 번호에 따라 첫 번째 열에서 n 개의 첫 번째 문자를 선택하는 방법

  8. 8

    두 번째 열의 구분 기호에 따라 CSV 파일의 단일 행을 여러 행으로 분할하는 방법

  9. 9

    원본 파일의 첫 번째 열 값에 따라 새 파일을 구성하려면 어떻게합니까?

  10. 10

    두 번째 열에 키가있는 파일의 첫 번째 열을 4 줄마다 정렬하는 방법

  11. 11

    두 번째 열의 첫 번째 숫자로 파일을 더 작게 분할하는 방법

  12. 12

    Python의 csv 파일에서 첫 번째 열의 값을 기준으로 행을 구분하는 방법

  13. 13

    위치 두 번째 양식을 설정하는 방법은 첫 번째 양식에 따라 다릅니다.

  14. 14

    AWK-파일의 첫 번째 열이 가리키는 파일의 내용을 가져 오는 방법

  15. 15

    각 섹션의 첫 번째 줄의 네 번째 값에 따라 파일 섹션을 정렬하는 방법은 무엇입니까?

  16. 16

    awk를 사용하여 끝까지 첫 번째 열을 제외한 csv 파일을 인쇄하는 방법

  17. 17

    awk를 사용하여 첫 번째 열과 두 번째 열의 첫 번째 줄을 단일 열로 인쇄하는 방법은 무엇입니까?

  18. 18

    Bootstrap에서 두 번째 행의 두 번째 열을 동일한 첫 번째 열 또는 첫 번째 행에 정렬하는 방법은 무엇입니까?

  19. 19

    첫 번째 <select> 옵션에 따라 두 번째 <select>를 채우는 방법

  20. 20

    파일 A에서 파일 b로 첫 번째 열을 복사하는 방법은 무엇입니까?

  21. 21

    첫 번째 열에 헤더 이름을 추가하는 방법

  22. 22

    해당 파일의 첫 번째 값의 조건에 따라 Linux에서 출력 파일을 정렬하는 방법은 무엇입니까?

  23. 23

    문자열 내에서 숫자를 분할하는 방법 (첫 번째 위치)?

  24. 24

    배열 [값 및 파일 이름]으로 만들고 첫 번째 파일 등에 대한 첫 번째 값을 쓰는 방법

  25. 25

    행렬 파일의 첫 번째 열에 문자열을 추가하는 방법은 무엇입니까?

  26. 26

    열 n과 파일의 첫 번째 줄에 문자열을 추가하는 방법은 무엇입니까?

  27. 27

    열 수에 따라 파일을 분할하는 방법은 무엇입니까?

  28. 28

    다른 열에서 첫 번째, 두 번째 및 세 번째 값을 선택하는 방법-Ms Access

  29. 29

    열을 첫 번째 숫자로 구분하는 방법

뜨겁다태그

보관