매번 새 줄에 awk 함수를 인쇄합니다. [중복]

매번 새 줄에 awk 함수를 인쇄합니다. [중복]

내 코드의 일부는 다음과 같습니다.

output=$(cat databaselog | awk '{print $9,$1,$2,$6}' )
echo $output >> savedfile

출력은 다음과 같으며, savefile이라는 새 파일에 저장됩니다.

name1 date1 id1 ip1 name2 date2 id2 ip2 name3 date3 id3 ip3

하지만 나는 이것이 다음과 같기를 원합니다:

name1 date1 id1 ip1
name2 date2 id2 ip2
name3 date3 id3 ip3

이것이 쉽다는 것은 알지만 올바른 방법을 찾을 수 없습니다. 도와주세요. 감사합니다!

답변1

에코할 때는 $output큰따옴표가 필요합니다. "$output"그렇지 않으면 출력이 줄 바꿈 및 기타 공백을 공백으로 변환합니다.

명령 대체를 큰따옴표로 묶는 것도 좋은 습관입니다. output="$(...)"그냥보다는output=$(...)

예를 들어

output="$( cat databaselog | awk '{print $9,$1,$2,$6}' )"
echo >> savedfile
echo "$output" >> savedfile

하지만 이렇게 하는 것이 더 좋습니다:

echo >> savedfile
awk '{print $9,$1,$2,$6}' databaselog >> savedfile

관련 정보