gpt4 book ai didi

linux - 将 gensub 应用于 awk 中所有字段的快捷方式

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:40 24 4
gpt4 key购买 nike

我有一个 awk 命令,它读取具有不同字段的单行 xml。我必须在所有字段上一一使用 gensub。

假设这是我的 xml 文件

<users><user><a>1</a><b>2</b><c>3</c></user></users>

我想要的输出是

1--2--3

此外,我想从命令行使用,如果可能的话,我想要一个衬垫。有什么办法可以让这个命令变得简短

awk -v FS='><' -v RS="</?user>" '{
a=gensub(/.*>(.*)<.*/, "\\1", "g", $1);
b=gensub(/.*>(.*)<.*/, "\\1", "g", $2);
c=gensub(/.*>(.*)<.*/, "\\1", "g", $3);
print a"--"b"--"c}' abc.xml

最佳答案

$ awk -F'<[^>]+>' -v OFS='--' '{print $4, $6, $8}' file
1--2--3

如果这不是您想要的,请编辑您的问题以提供更真正具有代表性的示例输入和预期输出。

鉴于您的评论中提供的新输入格式:

$ cat file
<users><user><a>1</a><b>2</b><c>3</c><user><a>1</a><b>2</b><c>3</c><user><a>1</a><b>2</b><c>3</c></user></users>

$ awk -v RS='</?user>' -F'<[^>]+>' -v OFS='--' 'RT&&(NR>1){print $2, $4, $6}' file
1--2--3
1--2--3
1--2--3

以上需要 GNU awk 来实现多字符 RS 和 RT。

关于linux - 将 gensub 应用于 awk 中所有字段的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380917/

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