awk linuxを使用した部分文字列の抽出

awk linuxを使用した部分文字列の抽出

次の内容を含むファイルがあります。

Text1 , Text11  : APC signal 0 , prev=7
Text2 , Text22  : APC signal 1 , prev=0
Text3 , Text33  : APC signal 0 , prev=1
Text4 , Text44  : APC signal 1 , prev=0
Text5 , Text55  : APC signal 0 , prev=1
Text6 , Text66  : APC signal 1 , prev=0

最初と3番目の列を抽出したいのですが、2番目の列(「:」の後の2番目の部分)の部分文字列だけを抽出したいと思います。

私が望む結果:

Text1 ,  APC signal 0 , prev=7
Text2 ,  APC signal 1 , prev=0
Text3 ,  APC signal 0 , prev=1
Text4 ,  APC signal 1 , prev=0
Text5 ,  APC signal 0 , prev=1
Text6 ,  APC signal 1 , prev=0

ベストアンサー1

使用sed

sed 's/, [^:]*:/, /' file

, これにより、カンマとスペース()で始まり、コロンではなくできるだけ多くの数([^:]*)が続き、コロン自体()が来るテキストを検索します:。その後、, 目的の出力を取得するには、コンマとスペース()で置き換えます。

Text1 ,  APC signal 0 , prev=7
Text2 ,  APC signal 1 , prev=0
Text3 ,  APC signal 0 , prev=1
Text4 ,  APC signal 1 , prev=0
Text5 ,  APC signal 0 , prev=1
Text6 ,  APC signal 1 , prev=0

実際、最初のコンマの後に2つのスペースを表示したくない場合は、2番目のカンマスペース(, )を単一のコンマ(,)に変更します。

おすすめ記事