awkを使用したファイル形式の指定

awkを使用したファイル形式の指定

私の入力ファイルには、次の形式のデータが含まれています。

1503668542862176    manager=10001|Bounced=999|Analyst=10004|Business Analyst=10005|Programmer=10003
1552024948590636    manager=10001|Bounced=999|Analyst=10004
1551728916565460    Bounced=999|Analyst=10004
1553617087089790    Analyst=10004
1538058487418963    manager=10001|Architect=10002|Analyst=10004

key=value各ペアを二重引用符で囲み、"key"="value"次に置き換える必要がある2番目の列を変換する必要があります|,awk

1503668542862176    "manager"="10001","Bounced"="999","Analyst"="10004","Business Analyst"="10005","Programmer"="10003"
1552024948590636    "manager"="10001","Bounced"="999","Analyst"="10004"
1551728916565460    "Bounced"="999","Analyst"="10004"
1553617087089790    "Analyst"="10004"
1538058487418963    "manager"="10001","Architect"="10002","Analyst"="10004"

ベストアンサー1

$ sed -e 's/|/","/g' -e 's/=/"="/g' -e 's/\t/\t"/' -e 's/$/"/' input.txt

これは次のことを行います。

  • |次へ置き換え,
  • =次へ置き換え"="
  • 最初のタブストップを次に置き換えます\t"
  • "aと行末の追加

最も簡単な方法awkは、フィールド区切り文字を変更することです。

$ awk -v FS="|" -v OFS='","' '{$1=$1}1' \
  | awk -v FS="=" -v OFS='"="' '{$1=$1}1'\
  | awk -v FS="\t" '{print $1,"\""$2"\""}' input.txt

おすすめ記事