\n
AWK는 개행 문자 와 일치하지 않습니다.gsub().
아래의 "딸기" 과일 항목을 변경하세요.
sed와 함께 사용하는 것도 좋습니다.
\n
이 스크립트에서 볼 수 있듯이 다음을 무시합니다.
cat << 'EOF' > ~/src
apple
fruit
strawberry
fruit
orange
fruit
blackberry
EOF
cat << 'EOF' > ~/scp.sh
#!/bin/bash
cat ~/src | awk '{ gsub("strawberry\nfruit", "strawberry\nfruitIsRed"); print }' > ~/trg
EOF
sh ~/scp.sh
diff ~/src ~/trg
# files are equals
답변1
awk의 기본 RS(레코드 구분 기호)는 \n
ewline이므로 awk는 이를 대체할 어디에서나 ewline을 볼 수 없으므로 \n
개행 문자를 인식하려면 RS를 다른 것으로 설정해야 합니다. 한 가지 방법은 RS를 빈 문자열로 설정하는 것입니다(레코드가 공백으로 구분됨을 의미). 개행 대신 줄):
awk -v RS= '{ "do stuffs" }'
그래서 구체적이지 않다.gsub()RS에만 의존합니다.