파일이 있다고 가정합니다.
파일 1 :
PAPER TEAM MANISH NISHA GARIMA JYOUTI ........etc
File2 내가 원하는 :
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
File1의 행에서 열로 변환
답변
를 사용하여 tr
반복되는 각 공백 문자 ( )를 단일 줄 바꿈 (
\n
) 문자로 바꿉니다.
tr -s ' ' '\n'< infile > outfile
그러나 나는 당신이 이런 것을 원한다고 생각합니까?
12 34 1 a # abcd-> 2 b $ # $ @ % 3 c @ 4 일 %
로에게 awk
우리가 할 수있는 :
awk '{ for (i=1; i<=NF; i++) RtoC[i]= (RtoC[i]? RtoC[i] FS $i: $i) }
END{ for (i in RtoC) print RtoC[i] }' infile
이것은 각각의 동일한 파일 번호 위치를 서로 결합하고 END
첫 번째 열의 첫 번째 행, 두 번째 열의 두 번째 행 등의 결과를 인쇄합니다. 물론 입력 파일은 메모리 크기로 제한됩니다.
답변
grep을 통해 간단히 할 수 있습니다. 기본적으로 grep은 일치하는 내용을 별도의 줄 바꿈으로 인쇄합니다.
grep -oP '\S+' infile > outfile
또는
grep -o '[^[:space:]]\+' infile > outfile
답변
다음 fmt
명령을 사용할 수도 있습니다 .
~$ cat f
PAPER TEAM MANISH NISHA GARIMA JYOUTI
~$ fmt -1 f
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
답변
와 GNU의 datamash :
$ datamash -W transpose <file
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI
답변
다음을 사용하여이 작업을 수행 할 수도 있습니다 sed
.
$ sed -e 's/ */\n/g' file1 > file2
참고 : 단어에 공백이 포함 된 상황은 처리하지 않습니다.
답변
을 사용 awk
하여 출력 필드 구분 기호 ( OFS
)를 레코드 (행) 구분 기호 ( RS
)로 설정하십시오.
awk '{OFS=RS;$1=$1}1' file > file2
답변
for
루프 사용하기 :
for val in `cat file1` ; do echo $val >> file2; done;