sed
次の条件で代替スクリプトを作成しました。
- 「open」という単語が別の単語の前に来ると、「open」という単語を「x」に変更します。
- 「open」という単語が他の単語の前に出ない場合は、「open」という単語を「l」に変更します。
たとえば、予想される入力は次のようになります。
open
open door
open blue door
can you open door
the door is open
予想される出力は次のとおりです。
l
x door
x blue door
can you x door
the door is l
今実装したコードは次のとおりです(本当に初めて接するコードだからです)。
sed 's/open/x/g'
ベストアンサー1
句読点で何をすべきかを推測することしかできないので、open, close
2つの単語がありますが、意味上分離されている状況は...いいえ含まれています(交換なし!)。
これまでのところ、これは私にとって効果的です。
$ cat test.txt
open
open door
open blue door
can you open door
the door is open
$ sed -E 's/\<open([[:space:]]+[[:alnum:]]+)/x\1/g;s/\<open[[:space:]]*$/l/g' test.txt
l
x door
x blue door
can you x door
the door is l