Linuxコマンドは、パターンの前後の部分行を異なる方法で処理します。

Linuxコマンドは、パターンの前後の部分行を異なる方法で処理します。

私のオリジナルテキストは

11  2   CDTZ - b00264ab
36  37  CDTB - c2330001

出力テキストを次のように表示したいと思います。

11  2   CDTZ - b0:02:64:ab
36  37  CDTB - c2:33:00:01

ハイフンの後に、文字列の2文字ごとにコロンを追加する必要があります。

次のような一般的なテキスト処理コマンドはありますか?

  1. ハイフンの前に含まれるすべての文字列は変更されていないままにしてください。
  2. ハイフンの後に2文字ごとにコロンを挿入します。

通常、パターン(ここではハイフン)の前後のテキストを異なる方法で処理する必要があります。

これまでの私の努力:

  • sed私はとの基本的な知識がありますawk
  • sedでこれを行う方法がある場合は、awkフィールド-区切り文字で(ハイフン)を設定し、それをawk実行してから、行全体を印刷します。sed 's/../&:/g;s/:$//'$2print $0

ベストアンサー1

この試み、

awk -v OFS='\t' '{gsub(/../,"&:",$NF); sub(/:$/,"",$NF);}1' file
11  2   CDTZ    -   b0:02:64:ab
36  37  CDTB    -   c2:33:00:01
  • gsub(/../,"&:",$NF):各ペアまたは文字に対して末尾が追加されます。
  • sub(/:$/,"",$NF):前のフィールドの末尾に追加された不要なコンテンツは削除されます。gsub

おすすめ記事