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

2つのファイルを使用してこのスクリプトを実行すると、次のエラーが発生します。

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

関連情報