파일의 두 열을 교대로 병합하는 방법은 무엇입니까?

파일의 두 열을 교대로 병합하는 방법은 무엇입니까?

파일의 두 열을 교대로 병합하는 방법은 무엇입니까? 아래 예를 참조하세요.

입력 파일:

sam    jam
tommy  bond

예상 출력:

sam
jam
tommy
bond

답변1

간단하게awk:

awk '{ print $1 ORS $2 }' file
  • $1$2-는 각각 첫 번째 및 두 번째 필드입니다.
  • ORS- 출력 레코드 구분 기호입니다. 초기 값은 ORS문자열 " \n"(예: 개행 문자) 입니다.

산출:

sam
jam
tommy
bond

답변2

몇 가지 대안:

awk 사용:

$ awk '$1=$1' OFS="\n" file1
sam
jam
tommy
bond

이 솔루션은 행당 필드 수에 관계없이 작동합니다.

$ cat file2
one two three
four five
six seven eight nine

$ awk '$1=$1' OFS="\n" file2
one
two
three
four
five
six
seven
eight
nine

OFS출력 필드 구분 기호입니다.
$1=$1OFS를 사용하여 awk가 각 레코드를 "다시 계산"하도록 강제합니다($0).

재미를 위해 다음은 한 줄에 원하는 수의 필드와도 작동하는 sed 대안입니다.

$ sed -r 's/[ ]+/\n/g' file2

답변3

~/z1에 있는 데이터의 경우 이 명령은 다음과 같습니다.

xargs -n1 < ~/z1

생산하다:

sam
jam
tommy
bond

이러한 시스템에서는:

OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.9 (jessie) 
bash GNU bash 4.3.30
xargs (GNU findutils) 4.4.2

그리고:

OS, ker|rel, machine: SunOS, 5.11, i86pc
Distribution        : Solaris 11.3 X86
bash GNU bash 4.1.17
xargs - ( /usr/bin/xargs, 2016-04-10 )

이것매개변수이 명령은 STDIN에서 한 번에 최대 n개(이 경우 1)까지 태그를 가져오고 해당 태그를 명령에 대한 인수로 제공합니다.에코.

행운을 빕니다... 건배, drl

답변4

echo `paste -s file` | tr ' ' '\n'

또는

paste -s file | fmt -1

또는

cat file | xargs -n1

awk특별한 경우에는 또는 같은 프로그래밍 명령을 사용할 필요가 없습니다 sed. 위의 간단한 명령으로 충분합니다.

관련 정보