1行だけ印刷するファイルがあります。この行を操作するために他のsedコマンドを使用するのが困難です。
apple orange.5678 dog cat 009 you
私は"orange.5678"をつかみ、"you"を含み、他のすべてを無視したいと思います。以下のように見えるといいです。
orange.5678 you
どこから始めるべきか、「orange.5678」と「you」を除くすべての項目を除外する方法がわかりません。どんな助けでもいいでしょう!
ベストアンサー1
$ sed -r 's/.* ([^ ]+\.[^ ]+).* ([^ ]+)$/\1 \2/' orange
orange.5678 you
説明する
-r
拡張正規表現の使用s/old/new
old
使用。 。 。交換new
.*
任意の文字数(some characters)
some characters
後で交換するときに参考になるように保存してください。[^ ]+
空白以外の一部の文字\.
テキストポイント$
行末\1
保存されたスキーマの逆参照
つまりs/.* ([^ ]+\.[^ ]+).* ([^ ]+)$/\1 \2/
、空白以外の文字の前の空白まで行のすべての項目を一致させ、.
その後に空白以外の文字を一致させて(対応する文字を両側に保存.
)、任意の文字を一致させ、最後の行セットを保存しないことを意味します。 - スペース文字をオンにし、一致全体をスペースで区切られた2つの保存されたパターンに置き換えます。