![sed를 사용하여 두 문자열 사이의 모든 줄(하나는 사용자 입력)을 인쇄합니다.](https://linux55.com/image/176602/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%91%90%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%82%AC%EC%9D%B4%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EC%A4%84(%ED%95%98%EB%82%98%EB%8A%94%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9E%85%EB%A0%A5)%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
나는 다음을 사용하려고합니다 :
sed -n '/String1/,/String2/p' Filename
String1과 String2 사이의 모든 줄을 인쇄합니다. String1을 사용자 입력으로 추가하고 싶지만,
read $userinput
sed -n '/$userinput/,/String2/p' Filename.
$userinput
그러나 입력이 따옴표 안에 있으므로 주어진 입력 대신 문자열로 읽혀집니다 .
답변1
간단히 말해서 다음과 같습니다.
read userinput # without sigil '$'
sed -n "/$userinput/,/String2/p" file # with double quotes
쉘에서 올바르게 인용하는 방법을 배우는 것은 매우 중요합니다.
공백/메타 문자를 포함하는 모든 리터럴은 "큰따옴표"로 처리합니다.모든확장:
"$var"
,"$(command "$var")"
,"${array[@]}"
,"a & b"
.'single quotes'
코드나 텍스트$'s: 'Costs $5 US'
에 대해서는ssh host 'echo "$HOSTNAME"'
을 참조하십시오.
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words