このsedコマンドは、端末に出力するときに機能します。
for FILE in *.cs; do NEW_VERS="$(cat $FILE | awk '/%version:/{print $(NF-1)}')"; sed -e "/Revision.*/,/using/{/\/\/.[\*]*[\*]$/i \\/\/ $NEW_VERS 221203 berra tjing tjong." -e '}' $FILE; done
インラインファイルの更新に「i」を試してみましたが、動作しません。
for FILE in *.cs; do NEW_VERS="$(cat $FILE | awk '/%version:/{print $(NF-1)}')"; sed -ie "/Revision.*/,/using/{/\/\/.[\*]*[\*]$/i \\/\/ $NEW_VERS 221203 berra tjing tjong." -e '}' $FILE; done
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
sed: -e expression #1, char 1: unexpected `}'
ループ内でファイルをインラインで更新するには、どのコマンドを変更する必要がありますか?
できること:
このコマンドは、開始パターンが「Revision.*」で終了パターンが「using」のブロックを探します。このブロックで "//****************" と同じ行を探し、上に次の行を追加します: $NEW_VERS 221203 berra tjing t Jong.
ここで $NEW_VERS は解析されたバージョンです。
これはすべて最初のコマンド(ターミナル出力)で機能します。しかし、ファイルをインラインで編集できることを願っています。
ありがとう