gpt4 book ai didi

awk - 使用 Sed 或 Awk 进行数据转换 - 名称到标题

转载 作者:行者123 更新时间:2023-12-05 09:35:54 25 4
gpt4 key购买 nike

我有以下格式的数据:

APP_OWNER                     : hari
APP_AREA : Work:Business Area:AUS
APP_ID : 124080
APP_OWNER : ari
APP_AREA : Work:AUS
APP_ID : 124345

我希望将数据转换为以下格式。

APP_OWNER,APP_AREA,APP_ID
hari,Work:Business Area:AUS,124080
ari,Work:AUS,124345

我可以转换一行,但如何同时转换 3 行?

我用一行的尝试

sed '0,/: /s//\n/' test.txt

原始问题:Convert Rows to Columns Shell Script

问候

最佳答案

这是一个没有硬编码任何值的 awk 解决方案:

awk -F '[[:blank:]]+:[[:blank:]]+' 'NR == 1 {fh=$1} !($1 in hdr) {tr = (tr == "" ? "" : tr ",") $1; hdr[$1]} $1 == fh && NR > 1 {print (body ? "" : tr ORS) td; body=1; td=""} {td = (td == "" ? "" : td ",") $2} END {print td}' file

APP_OWNER,APP_AREA,APP_ID
hari,Work:Business Area:AUS,124080
ari,Work:AUS,124345

这里是更具可读性的版本:

awk -F '[[:blank:]]+:[[:blank:]]+' '
NR == 1 {
fh = $1
}
!($1 in hdr) { # collect headers only once
tr = (tr == "" ? "" : tr ",") $1
hdr[$1]
}
$1 == fh && NR > 1 { # print header and body
print (body ? "" : tr ORS) td # if body=1 then print only body
body = 1
td = ""
}
{
td = (td == "" ? "" : td ",") $2
}
END {
print td
}' file

关于awk - 使用 Sed 或 Awk 进行数据转换 - 名称到标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65517884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com