다른 파일에서 특정 열을 선택, 복사 및 붙여넣고 해당 열에서 하나의 파일을 만드는 방법은 무엇입니까?

다른 파일에서 특정 열을 선택, 복사 및 붙여넣고 해당 열에서 하나의 파일을 만드는 방법은 무엇입니까?

특정 파일의 일부 열을 선택하여 여러 파일의 데이터를 생성하고 구성하고 싶습니다. 파일이 10개가 넘는데 각 파일의 두 번째, 세 번째, 네 번째 열을 복사하여 하나의 파일에 붙여넣어야 합니다.

답변1

이 작업도 쉽게 수행할 수 있습니다 awk.

$ awk '{print $2,$3,$4}' *.txt > collapsed_output.txt

다음은 몇 가지 샘플 데이터입니다.

$ seq 20 | paste - - - - - > sample.txt

이 줄은 다음과 같습니다.

$ head sample.txt 
1   2   3   4   5
6   7   8   9   10
11  12  13  14  15
16  17  18  19  20

이제 10개의 복사본을 만듭니다.

$ seq 10 | xargs -I{} cp sample.txt sample{}.txt

이제 다음 파일이 있습니다.

$ tree
.
|-- sample10.txt
|-- sample1.txt
|-- sample2.txt
|-- sample3.txt
|-- sample4.txt
|-- sample5.txt
|-- sample6.txt
|-- sample7.txt
|-- sample8.txt
|-- sample9.txt
`-- sample.txt

이제 명령을 실행하면 다음과 같습니다 awk.

$ awk '{print $2, $3, $4}' sample{1..10}.txt | column -t
2   3   4
7   8   9
12  13  14
17  18  19
2   3   4
7   8   9
12  13  14
17  18  19
2   3   4
7   8   9
12  13  14
17  18  19
...

sample01.txt여기서는 처음 3개 파일( ... ) 의 출력을 보여줍니다 sample03.txt. 또한 이 명령을 사용하여 출력 형식을 지정 column -t하지만 이는 U&L에서 출력을 더 쉽게 볼 수 있도록 표시 목적으로만 사용됩니다.

추가 서식 지정은 명령에서 쉽게 수행할 수 있지만 awk이는 질문의 범위를 벗어나는 것 같습니다.

답변2

보세요명령줄 유틸리티가 호출됩니다.cut. 고유한 구분 기호로 구분된 열을 추출할 수 있습니다. 사용할 수 있는 부품을 재조립하세요.paste.

예를 들어 일반적인 쉼표로 구분된 형식이 있는 경우

$ cat debts.csv
Name,Age,Debt
Alice,20,1337
Bob,30,42

$ cat pets.csv
Name,Pet
Alice,Dog
Bob,Cat

이름과 부채를 추출할 수 있습니다.

$ cut -d, -f1,3 debts.csv
Name,Debt
Alice,1337
Bob,42

부채와 애완 동물을 결합

$ cut -d, -f2 pets.csv | paste -d, debts.csv -
Name,Age,Debt,Pet
Alice,20,1337,Dog
Bob,30,42,Cat
  • 필드 구분 기호를 사용 cut하고 paste결정합니다 .-d
  • -f추출할 컬럼을 선택 cut하고
  • -파일 대신 표준 입력(즉, 후자의 paste경우 파이프에서)을 사용함을 나타냅니다.

관련 정보