「open」という言葉をさまざまな条件に置き換え

「open」という言葉をさまざまな条件に置き換え

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, close2つの単語がありますが、意味上分離されている状況は...いいえ含まれています(交換なし!)。

これまでのところ、これは私にとって効果的です。

$ 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

おすすめ記事