sed를 사용하여 두 문자열 사이의 모든 줄(하나는 사용자 입력)을 인쇄합니다.

sed를 사용하여 두 문자열 사이의 모든 줄(하나는 사용자 입력)을 인쇄합니다.

나는 다음을 사용하려고합니다 :

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

관련 정보