sed 명령의 "명령 뒤 추가 문자"

sed 명령의 "명령 뒤 추가 문자"
#!/bin/bash
SVG=$1
CSV=$2

for p in "$CSV"; do
LINEA=$(cut -d',' -f1 $p | sed '1d')
LINEB=$(cut -d',' -f2 $p | sed '1d')
if grep -iq "$LINEA" "$SVG"; then
sed '/g id=\"..\"/a style=\"fill:'"$LINEB"';\"' $SVG > temp.svg
else
echo "ERROR"
fi
done

두 개의 파일을 사용하여 이 스크립트를 실행하면 다음 오류가 발생합니다.

sed: -e expression #1, char 66: extra characters after command

답변1

일부 sed[aic]s는 백슬래시로 이스케이프된 줄바꿈이 뒤따르지 않고 모든 관련 항목이 뒤따르는 명령을 허용합니다.text좋다:

sed '/address/atext'

...그런 사람들에게도하다이스케이프하지 않고 개행 문자를 허용하는 것과 선행 공백으로 수행할 수 있는 작업도 구현에 따라 다르므로...

sed '/address/a text'

...결과는 다음과 같을 수 있습니다.

sed '/address/atext'

...휴대용이며표준화이런 글을 쓰는 방법은...

sed '/address/a\
text and embedded newline\
more appended text
/next command/...'

답변2

주문하다sed플래그가 오류를 출력할 수 있음extra characters after command

이것은 잘못된 것입니다:

sed -i fileName -r 's/a/b/g'

옳은:

sed -r 's/a/b/g' -i fileName

관련 정보