私の入力ファイルには、次の形式のデータが含まれています。
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