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

一些 seds 将容忍一个[aic]命令后面没有紧跟着反斜杠转义的换行符,然后是所有相关的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

相关内容