답변:
일반적으로 적절한 CSV 파서가 권장됩니다. 이 간단한 경우 awk는 필드 구분 문자로 큰 따옴표를 사용하고 다음을 수행합니다.
awk -F '"' -v OFS='"' '{
for (i=2; i<=NF; i+=2)
gsub(/[[:blank:]]/, "_", $i)
print
}' <<END
first "UDP netprobe" hello
second "ACL allow" friendly "oops, another quoted field"
third "ACL deny" world
END
first "UDP_netprobe" hello
second "ACL_allow" friendly "oops,_another_quoted_field"
third "ACL_deny" world
원 라이너 팬의 경우 :
awk -F\" '{for(i=2;i<=NF;i+=2)gsub(/[[:blank:]]/,"_",$i)}1' OFS=\" file
column
으로 공백은 입력 파일의 구분 기호로 사용되며-s 'delimiter'
, 구분 기호 는 문자 집합으로 변경할 수 있습니다 .