foo.txt와 bar.txt라는 두 개의 파일을 만들었습니다.
foo.txt는 다음과 같습니다.foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 foo10
및 bar.txt:bar1 bar2 bar3 bar4 bar5 bar6 bar7 bar8 bar9 bar10
그러면 어떻게 이 두 텍스트 파일을 foobar.txt라는 텍스트 파일로 출력하고 다음과 같이 정렬할 수 있습니까?
foo1 bar1
foo2 bar2
foo3 bar3
...
관리 콘텐츠: 사람들이 병합을 제안했기 때문에 중복된 질문이라는 경고를 받았습니다.
foo1
foo2
foo3
foo4
foo5
그리고
bar1
bar2
bar3
bar4
bar5
같은 과정입니다. 이 작업을 수행해야 하는 경우 여기에서 새 줄 조합에 대한 문제 해결 텍스트를 찾을 수 있습니다.사용자 2120893의 질문에 대한 링크
공백 항목이 있는 파일을 편집하는 명령을 사용하려면 awk를 사용하여 표시된 아래 답변을 사용해야 합니다. "두 목록을 결합하는 방법" 및 "간격 목록을 새 행 목록으로 분리하는 방법"에 대한 질문이 계속 표시되지만 awk 함수를 통해 두 간격 목록을 분리하기 위해 awk의 단일 행 명령을 사용하지 않은 다음 awk 사양을 통해 결합합니다. 일어서세요. 마침내 내 질문에 답해 준 Sergiy Kolodyazhny에게 많은 감사를 드립니다(단 하나의 명령만 사용하여 답변을 드렸습니다!). 나는 이 질문에 대한 답을 찾고 있었고 이상한 마법사가 우리에게 그 비결을 보여주기 위해 개입했습니다. 또 다른 훌륭한 답변을 주신 John1024에게 감사드립니다.
답변1
다음 두 파일부터 시작해 보겠습니다.
$ cat foo.txt
foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 foo10
$ cat bar.txt
bar1 bar2 bar3 bar4 bar5 bar6 bar7 bar8 bar9 bar10
함께 넣어보세요:
$ paste <(tr ' ' '\n' <foo.txt) <(tr ' ' '\n' <bar.txt)
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
또는:
$ awk -v RS='[[:space:]]+' 'FNR==NR{a[NR]=$0; next} {print a[FNR],$0}' foo.txt bar.txt
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
답변2
답변3
이미 게시된 조옮김 및 결합 방법에 대한 대안으로 다음은 결합 및 조옮김 방법입니다.
$ cat foo.txt bar.txt | rs -T
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
답변4
이는 다음을 통해 달성할 수 있습니다 awk
.
$ awk 'NR==FNR{split($0,a);}NR!=FNR{for(i=1;i<=NF;i++) print a[i],$i}' foo.txt bar.txt
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10