특정 파일의 일부 열을 선택하여 여러 파일의 데이터를 생성하고 구성하고 싶습니다. 파일이 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
경우 파이프에서)을 사용함을 나타냅니다.