![왜 여분의 빈 줄이 있습니까? [복사]](https://linux55.com/image/203546/%EC%99%9C%20%EC%97%AC%EB%B6%84%EC%9D%98%20%EB%B9%88%20%EC%A4%84%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
공백으로 구분된 가로 데이터가 있습니다.
0 2 32 323 443 ...
가로로 나열된 파일을 세로로 나열된 파일로 변환하여 정렬하는 쉘 스크립트를 만들었습니다.
filename=/tmp/vList
colcount=$(wc -w < "$1")
counter=1
sortResult=0
while [ "$counter" -le "$colcount" ]
do
cat "$1" | cut -d " " -f"$counter">>"$filename"
counter=$((counter+1))
done
작동하지만 가로 목록의 각 값 사이에 빈 행을 포함하는 세로 목록을 만듭니다.
0
2
32
323
빈 줄이 나타나는 이유와 이를 방지하는 방법은 무엇입니까?
[편집] IsaaC의 제안 이후 제 질문이 이전 질문과 중복되고 유사하며 심지어 동일한 답변이라는 것을 발견하여 이 질문을 닫아야 합니다. 모든 기여자에게 감사드립니다.
답변1
다음과 같은 방법으로 이 작업을 수행할 수 있습니다 tr
.
tr ' ' '\n' < file
예를 들어:
% cat file
0 2 32 323 443
% tr ' ' '\n' < file
0
2
32
323
443
답변2
perl -pne "s/ /\n/g" filename
산출
0
2
32
323
443
답변3
이것이 당신이 원하는 순수한 쉘 스크립트라고 확신합니까?
grep -o '\S\+' input.file
또는
sed 's/[[:blank:]\n]\+/\n/g' input.file
또는
awk -v RS='([[:blank:]\n]+)' '1' input.file
또는
awk '{ for(i=1;i<=NF;i++) print $i }' input.file
...더 정확할 수도 있습니다.
답변4
더 좋은 방법:
#!/bin/bash
filename="/tmp/vList"
for i in $(cat "$filename") ; do
echo "$i"
fi