コマンド ライン ツールを使用してテキスト行から単語を除外するにはどうすればよいですか?
例:
line 1: All's Well That Ends Well
filter: That Well
output: Well That Well
注意: フィルタリング後も、二重出現が 2 回表示されます。
GNU ユーティリティのラインとは別に、Python スクリプトを使用することもできます。
コマンド ライン ツールを使用してテキスト行から単語を除外するにはどうすればよいですか?
例:
line 1: All's Well That Ends Well
filter: That Well
output: Well That Well
注意: フィルタリング後も、二重出現が 2 回表示されます。
GNU ユーティリティのラインとは別に、Python スクリプトを使用することもできます。
grep
次のようにテキストを送信(パイプ)できます。
echo "All's Well That Ends Well" | grep -o '\(That\|Well\)'
\b
単語境界も一致させるために追加します。長い単語 ( などWellness
) は拒否されます。
echo "All's Well That Ends Well" | grep -o '\(\bThat\b\|\bWell\b\)'
>>> l="All's Well That Ends Well"
>>> k=['Well','That']
>>> [w for w in l.split() if w in k]
シェルスクリプトを使用してこれを行うにはどうすればよいですか?
ここにアイデアがあります:
line = "All's Well That Ends Well"
filter = "That Well"
print [word.lower() for word in line.split() if word.lower() in filter.split()]
その最後の行はリスト内包表記と呼ばれ、非常に「pythonic」です。split() は、任意の文字列を単語のリストにします。リスト内の各項目は、単語間の空白によって決定されます。lower() を追加して、元の大文字と小文字を無視して小文字で単語を返すようにしました。