unix sed 削除アダプタ名

unix sed 削除アダプタ名

sed出力をパイプし、下のアダプタ名を削除し、sed値をカンマにグループ化したいと思います。

ent13: 16 3979 ent12: 211 411 3978 ent11: 15 3977 ent10: 111 178 179 311 511 1719 3976

答え1

スペースをコンマで置き換え、コロンの前の単語を削除し、先頭のスペースを削除し、スペースの前のカンマを削除します。

sed 's/ /,/g; s/[^,]*:,/ /g;s/^ //;s/, / /g'

出力:

16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976

答え2

sed最初に埋め込まれたパターンを削除してentから、ギャップを緩め、次に置き換えること,ができます。

sed 's/ent[0-9][0-9]: //g; s/ /,/g'

答え3

GNUを使用するawkmawk(で正規表現をサポートRS):

$ mawk -v RS='ent[0-9][0-9]: ' -v ORS=' ' -v FS=' ' -v OFS=',' '
    $1 != "" { $1=$1; print }
    END      { printf("\n") }' <file
16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976

または等しく、

$ mawk 'BEGIN    { RS="ent[0-9][0-9]: "; ORS=FS=" "; OFS="," }
        $1 != "" { $1=$1; print } 
        END      { printf("\n") }' <file
16,3979 211,411,3978 15,3977 111,178,179,311,511,1719,3976

entNN:これは、単一の行を(ここで数字は)区切りNのレコードセットとして扱います。各レコードは、スペースで区切られたフィールドのセットとして読み取られます。

テスト$1 != ""は最初の空のレコード(最初のレコード区切り文字の前に何もありません)をスキップし、ブロックは出力用のレコードを再フォーマットするために次のことを行います$1=$1。これにより、awk指定ORSされた合計値を使用してフォーマットOFSが再割り当てされます。

答え4

「コンマで値をグループ化する」とは、「各アダプタの番号を他のアダプタの番号とカンマで区切る」という意味ですか?それから試してみてください。

sed 's/ *ent[0-9][0-9]: /, /g; s/^, //g' file
16 3979, 211 411 3978, 15 3977, 111 178 179 311 511 1719 3976

関連情報