내 데이터 샘플은 다음과 같습니다.
1 2 3 4 5
4 5 6 7 9 9 0
1 2 3 4
1 8 7 6 9
나는 그것을 다음과 같이 바꾸고 싶습니다 :
1
2
3
4
5
4
5
6
7
9
9
0
1
2
3
4
1
8
7
6
9
답변1
입력 라인의 경우공백 없음이것을 사용하십시오 :
fold -1 data_sample.txt
겹- 지정된 너비에 맞게 각 입력 줄을 줄 바꿈합니다.
이 경우 너비는 -1
옵션으로 지정된 1열입니다.
당신이 입력하면공백이 있습니다, 그러나 이를 생략하려면 다음을 사용하십시오.
grep -o '\S' data_sample.txt
\S
- 공백이 아닌 문자와 일치합니다.
-o
- 일치하는 각 부분을 별도의 줄에 인쇄합니다.
답변2
rs
(모양 변경) 유틸리티를 사용하십시오 .
$ rs 0 1 < data
1
2
3
4
5
4
5
6
7
9
9
0
1
2
3
4
1
8
7
6
9
row
출력 배열 형태는 col
다음과 같이 선택적 인수와 매개변수에 의해 결정됩니다.
If only one of them is a positive integer, rs computes a value for the
other which will accommodate all of the data.
이 경우 0
양의 정수가 없으므로 모든 필드를 단일 열에 넣도록 행 수를 선택합니다.
답변3
tr
다음 명령을 사용할 수 있습니다 .
tr -s ' ' '\n' < infile
이를 수행하는 다른 옵션은 다음과 같습니다.
sed -e $'s/\s*/\\\n/g' infile
또는:
sed 's/\s*/\
/g' infile.txt
또는 일부 sed
구현에서는 다음을 사용합니다.
sed 's/\s*/\n/g' infile
또는 다음을 통해 gawk
(마지막 빈 줄이 마음에 들지 않는 경우):
awk -v RS='[[:blank:]]*' '1' infile
또는 bash
:
#!/bin/bash
while read -r line; do
echo "${line// \+/$'\n'}";
done < infile
또는 배열을 읽은 후 다음을 수행하십시오 printf
.
#!/bin/bash
while read -a fields; do
printf "%s\n" "${fields[@]}";
done < infile
답변4
awk '{ for(i=1;i<=NF;i++) print $i; }' input
또는 빈 줄을 유지해야 하는 경우:
awk '/^$/ { print; }; { for(i=1;i<=NF;i++) print $i; }' input