CSV文字列形式を変更する方法

CSV文字列形式を変更する方法

出力ラインがありますipsec statusall <conn_name>。トラフィック量によっては、次のようになります。

sr_mesh_aws_22{10}:  AES_CBC_256/HMAC_SHA2_256_128/MODP_1024, 0 bytes_i, 0 bytes_o, rekeying in 32 minutes

時々:

sp_mesh_6_7{8}:  AES_CBC_256/HMAC_SHA2_256_128, 336  bytes_i, 336  bytes_o (4 pkts, 15s ago), rekeying disabled

または:

sr_mesh_aws_21{24}:  AES_CBC_256/HMAC_SHA1_96, 59189 bytes_i (469 pkts, 0s ago), 128238 bytes_o (431 pkts, 0s ago), rekeying in 32 minutes

文字列形式:

conn_name{id}: algorithm, traffic in info, traffic out info, rekeying info

すべてが簡単に分析できますが、トラフィックフローが始まると、traffic in infoまたはtraffic out info間のフィールドに追加情報が表示されます(...)。そして同じ文字で区切られた2つのフィールドがあります,

存在する場合、すべてを内部,に置き換えるには?;(...)

より良いシンプルなシェルツール:sed / awk / ...

ベストアンサー1

示した例に基づいて、クイックハッキングは次のとおりです。

  • ,交換しない(...)
  • しかし、次にpkts,置き換えpkts;

与える:

echo "sr_mesh_aws_21{24}:  AES_CBC_256/HMAC_SHA1_96, 59189 bytes_i (469 pkts, 0s ago), 128238 bytes_o (431 pkts, 0s ago), rekeying in 32 minutes" | sed 's/pkts,/pkts;/g'

注:このecho ...セクションではコマンド出力をシミュレートします。

おすすめ記事