gpt4 book ai didi

bash - 如何使用 sed 或 awk 将管道替换为空格,但仅限于字母单词之间

转载 作者:行者123 更新时间:2023-11-29 09:40:29 24 4
gpt4 key购买 nike

我一直在为脚本而苦苦挣扎。我有一份体操队名单和分数。我已经设法将文件管道分隔开,就像下面的数据小例子一样。但是,现在我需要用空格替换管道,但前提是它在字母单词之间。数字之间的管道必须保留。这样一来,无论由多少个字组成,我都可以将团队名称作为一个字段。然后数据将准备好加载到我的数据库中。我知道使用正则表达式的 sedawk 应该能够做到这一点,但我还没有完全弄明白。我已经搞砸了一整天,我相信有人可以在 2 分钟内告诉我如何做。 :-)

开始格式:

Twistars|28.250|28.700|28.100|27.950|113.600
Excel|Gymnastics|28.250|28.700|28.100|27.950|113.600
Head|Over|Heels|Gymnastics|28.250|28.700|28.100|27.950|113.600

我的最终目标:

Twistars|28.250|28.700|28.100|27.950|113.600
Excel Gymnastics|28.250|28.700|28.100|27.950|113.600
Head Over Heels Gymnastics|28.250|28.700|28.100|27.950|113.600

任何建议/小例子将不胜感激。

最佳答案

这是一个 awk 解决方案:

awk -F\| '{printf $1;for (i=2;i<=NF;i++) printf (($(i-1)!~/[0-9.]+/ && $(i)!~/[0-9.]+/)?" ":"|")"%s",$i;print ""}' file
Twistars|28.250|28.700|28.100|27.950|113.600
Excel Gymnastics|28.250|28.700|28.100|27.950|113.600
Head Over Heels Gymnastics|28.250|28.700|28.100|27.950|113.600

关于bash - 如何使用 sed 或 awk 将管道替换为空格,但仅限于字母单词之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885846/

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