さて、次の形式の一連のコンテンツを含むファイルはほとんどありません。
[abc] #4 *5
[pqr] #3 *4
[xyx] #5 *2
今、私はすべての出現を置き換える必要がありました
[xyx] #3 *2
に
[xyx] #1 *2
すべてのファイルで。
ここで問題となっているのは、[xyz] と #3 の間のスペースの存在です。この検索式を、次のようなスクリプトのコマンド ライン引数として使用することが 2 つあります。
searchExp=$1
repalaceExp=$2
echo $searchExp
echo $replaceExp
for i in `grep \'$searchExp\'`
do
sed 's/$searchExp/$replaceExp' $i > $i.new
done
引数を次のように渡していることを考えると、これで問題ないと思います。
./replace_script '^\[xyz\] #3' '\[xyz\] #1'
echo ステートメント int を見ると、スクリプトは検索式と relace 式のすべてのスペースを 1 つのスペースに減らします。
\[xyz\] #3
今、スペース文字を処理するために他のいくつかの代替手段を試しました
1. ^\[xyz\][ ]+#3
これはアンバランスな [ ] と叫んでいるので、正規表現エラーです
2. ^\[xyz\]\s+#3 //as per few suggestion on SO
これは一致しません。
私が間違っているところがわかりますか?
編集:タイプミスを修正