gpt4 book ai didi

bash - 使用 sed 进行字段排序

转载 作者:行者123 更新时间:2023-12-05 01:23:21 24 4
gpt4 key购买 nike

我有一个带有 sed 命令的 bash 脚本,我想在 csv 文件上运行它来更改某些字段的顺序。这是我尝试过的:

sed -r '{
s/(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)/\1,\2,\3,\4,\5,\6,\8,\9,\10,\11,\7/
}' $1

问题来了,因为我有 11 个字段(即两位数),所以当我指定所需的顺序时,即

"\1,\2,\3,\4,\5,\6,\8,\9,\10,\11,\7/"

10 和 11 被视为文字,这破坏了我的尝试。我已经尝试了明显的替代方案,例如:

"\1,\2,\3,\4,\5,\6,\8,\9,(10),(11),\7/"

"\1,\2,\3,\4,\5,\6,\8,\9,{10},{11},\7/"

"\1,\2,\3,\4,\5,\6,\8,\9,\(10),\(11),\7/"

"\1,\2,\3,\4,\5,\6,\8,\9,\{10},\{11},\7/"

但这些都不起作用,它们也被视为文字。我的想象力快用完了,不知道还能尝试什么,有什么想法吗?

我知道还有其他方法可以解决此问题(例如 awk 等),但如果您的回答集中在 sed 中,我将不胜感激,因为我的其余部分代码是使用 sed 完成的。

先谢谢大家了!

最佳答案

我看到三个 block :字段 1-6、字段 7 和其余部分。所以你可以使用

sed -r '{s/^(([^,]*,){6})([^,]*),(.*)/\1\4,\3/}'

关于bash - 使用 sed 进行字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72509598/

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