2 つの単語間のデータの削除

2 つの単語間のデータの削除

2つの単語の間に何があるかに関係なく、すべてのデータを削除したいと思います。両方の単語は示されているとおりuserです。Gecko)

たとえば、

abcd: efgh user jfslkdj ajskdlfj askldjf Gecko) print
ijkl: mnop user fjskdf sdfjkdf skdjf sdkfj Gecko) second

次のように表示する必要があります。
abcd: efgh print
ijkl: mnop second

これが可能かどうか教えてください。

これまでに試したことは次のとおりです。まだ遠いことを知っています。

sed 's/user*Gecko)//g'

答え1

次のようにコマンドを変更できます。

sed 's/user.*Gecko)//g'

部分文字列が削除されますuser.....Gecko)

あなたはそれを使用することができます:

sed -Ee "s/(.*)(user.*Gecko\))(.*)/\1\3/g" filename

最初と3番目のフィールドのみを印刷し、2番目のフィールドは無視します。これには、ユーザーとGeckoの間のすべてのコンテンツが含まれます。

user開始単語やGecko)最後の単語ではないと確信している場合は、次のように使用できます。

sed -Ee "s/(.*) (user.*Gecko\)) (.*)/\1 \3/g" filename

これはスペースで区切られた単語のみを置き換えるため、より正確です。

答え2

次のコマンドを試してみましたが、うまくいきます。

awk '{print $1,$2,$NF}'  filename

出力

abcd: efgh print
ijkl: mnop second

関連情報