#!/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