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