gpt4 book ai didi

awk 插入列并在单行上打印

转载 作者:行者123 更新时间:2023-12-04 12:30:16 25 4
gpt4 key购买 nike

我正在尝试使用 AWK 处理逗号分隔的文本文件并插入新列。我想把第二列的内容分成三部分插入三列在新文本文件中的 B 列之后。

insert.txt - 我的数据

column A, name|ID1234 @ tag1, column C, column D

我正在尝试生成的输出

column A, name|ID1234 @ tag1, name, ID1234, tag1, column C, column D

我试过的代码

#!/bin/awk

BEGIN {
FS=","
OFS=","
}
{
# Split Column B - twice
split($2,a,"|") #a[1] a[2] seperated by |
split(a[2],b,"@") #b[1] b[2] seperated by @

print $1,$2,a[1],b[1],b[2];
{for(i=3;i<=NF;++i) printf $i}
}

awk -f insert.awk insert.txt > output.txt

如何将输出格式化为在一行中,用逗号分隔插入的列?

是否可以在输出过程中修剪每列开头和结尾的空白?

谢谢约书亚

最佳答案

您可以在任何版本的 awk 中使用此解决方案:

awk 'BEGIN {FS=OFS=", "}
{v2 = $2; gsub(/ *[|@] */, OFS, v2); $2 = $2 OFS v2} 1' file

column A, name|ID1234 @ tag1, name, ID1234, tag1, column C, column D

我们使用字段分隔符 ", " 拆分每条记录,然后在 的存储值中用相同的字段分隔符替换 |@ >$2 是变量 v2。然后我们在 OFS 之后将 v2 的更改值附加到 $2 中,最后打印完整记录。

关于awk 插入列并在单行上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69583145/

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