0

コマンド ライン ツールを使用してテキスト行から単語を除外するにはどうすればよいですか?

例:

line 1: All's Well That Ends Well
filter: That Well
output: Well That Well

注意: フィルタリング後も、二重出現が 2 回表示されます。

GNU ユーティリティのラインとは別に、Python スクリプトを使用することもできます。

4

4 に答える 4

2

grep次のようにテキストを送信(パイプ)できます。

echo "All's Well That Ends Well" | grep -o '\(That\|Well\)'
于 2012-06-11T18:39:01.950 に答える
2

\b単語境界も一致させるために追加します。長い単語 ( などWellness) は拒否されます。

echo "All's Well That Ends Well" | grep -o '\(\bThat\b\|\bWell\b\)'
于 2012-06-11T18:44:20.203 に答える
0
>>> l="All's Well That Ends Well"
>>> k=['Well','That']
>>> [w for w in l.split() if w in k]

シェルスクリプトを使用してこれを行うにはどうすればよいですか?

于 2012-06-11T18:43:02.463 に答える
0

ここにアイデアがあります:

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() を追加して、元の大文字と小文字を無視して小文字で単語を返すようにしました。

于 2012-06-11T18:46:28.240 に答える