テキストファイル(Fortranソースコード)をフォーマットし、一部のキーワードを小文字から大文字に、またはその逆に変更する必要があります。可能なキーワードのリストを作成し、次のスクリプトを作成しました。
for ((i=0; i<$nwords; i++ )); do
word=${words[$i]}
small=${word,,}
cap=${word^^}
sed -i "s/$small/$cap/gI" $filein
done
正常に動作します。質問は次のとおりです。
キーワードの 1 つが「use」で、テストのどこかに「uselog」という単語があるとします。スクリプトはこれをとにかく避けたい「USERlog」に変更します。私の考えはキーワードにスペースを追加することでしたが、何とか自動的に切り捨てられます。私は、「使用」の代わりに「使用」または「使用」を試しましたが、結果は同じであるということです。
引用符、角かっこ、または同様のものを使用するなど、これを行う簡単な方法が必要だと思いますが、これまで見つかりませんでした。他の選択肢も大歓迎です。
答え1
単語の境界を使用するとGNU sed
使用できます\b
単語の境界と一致します。つまり、左側の文字が「単語」文字で、右側の文字が「非単語」文字の場合は一致し、その逆も同様です。
sed 's/\bword\b/newword/g' file.txt
キーワードを入力するにはspace
:
sed 's/\sword\s/ newword /g' file.txt
参考にしてくださいニューワード両側に一つずつスペースがあります。