나는 다음을 사용하여 스크립트를 실행합니다../myshfile.sh actors
sed -n -e "1,$1p" test.txt > test2.txt && mv test2.txt test.txt
아래와 같은 오류가 발생하는데 원인을 찾을 수 없습니다...
sed: -e expression #1, char 3: unexpected `,'
작은따옴표를 사용해 보세요
sed -n -e '1,$1p' test.txt > test2.txt && mv test2.txt test.txt
하지만 이것은 또 다른 오류를 발생시킵니다
sed: -e expression #1, char 4: unknown command: `1'
답변1
에서 셸로 확장된 내용은 "1,$1p"
을 참조하세요 . 유효한 sed 주소가 아니므로 오류가 발생합니다. 제가 보기에는 오류 텍스트가 조금 이상하게 보이지만, 명령으로 인식한 다음 다시 쉼표에 대해 궁금해하는 것 같습니다.$1
sed
1,actorsp
actorsp
a
에 '1,$1p'
, $1
응아니요껍질이 펼쳐져 sed
보이는 것입니다 1,$1p
. $
유효한 주소이고 마지막 행을 표시하는 데 사용되므로 1,$
단순히 "모든 행"을 의미합니다. 1
하지만 유효한 명령이 아니므로 오류입니다.
의도를 밝히지 않으셨기 때문에 도움을 드리기 어렵습니다.
답변2
구분 기호를 사용해 보세요.
sed -n -e "1,/$1/p" test.txt
당신이 시도하는 코드는 다음과 같이 확장됩니다.
sed -n -e 1,actorsp test.txt
p
sed는 정규식의 일부로 option을 사용합니다 actorp
. 따라서 정규식과 옵션 사이에 구분 기호를 사용하여 작동하게 하세요.