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