"while read -r LINE; do"는 여러 공백을 하나의 공백으로 대체합니다.

"while read -r LINE; do"는 여러 공백을 하나의 공백으로 대체합니다.

readbash 3.2를 사용하여 파일을 읽으려고 하는데 read여러 공백의 인스턴스를 단일 공백으로 변환하는 것 같습니다.

예를 들어 다음 코드에는 "hello"와 "there" 사이에 두 개의 탭이 있고 "today"와 "world" 사이에 세 개의 공백이 있습니다.

while read -r LINE; do
    echo $LINE
done <<< "hello     there
today   world"

그러나 실행하면 각 단어 그룹 사이에 공백 하나만 출력됩니다.

hello there
today world

대신 다음과 같이 공백을 보존하는 줄을 출력하고 싶습니다.

hello       there
today   world

이를 수행할 수 있는 방법이 있습니까? 읽지 않았다면 다른 것이 있습니까?

답변1

인쇄할 때 변수 주위에 따옴표를 넣으세요. 확장된 다음 토큰화되므로 및를 별도의 인수로 echo가져옵니다 .hellothere

echo "$LINE"

또는 더 나은

printf '%s\n' "$LINE"

당신의 공백을 유지합니다

따라서 공백을 변경하는 것이 아니라 read나중에 해당 변수를 참조하지 않는다는 것입니다.

관련 정보