gpt4 book ai didi

bash - 使用 shell 脚本删除除每行第一个以外的所有逗号

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

我有一个文本文件,所有行都以数字代码开头,后跟一个或几个单词、一个逗号,然后是用逗号分隔的单词列表。除了第一个逗号之外,我需要删除每一行中的所有逗号。例如:

1.2.3 Example question, a, question, that, is, hopefully, not, too, rudimentary

which should be changed to

1.2.3 Example question, a question that is hopefully not too rudimentary
我曾尝试使用 sed 和 shell 脚本来解决这个问题,我可以弄清楚如何删除每行 (1) 上的第一个逗号以及如何删除所有逗号 (2),但无法弄清楚如何仅删除第一个逗号之后的逗号每行逗号
(1)
while read -r line
do
echo "${line/,/}"
done <"filename.txt" > newfile.txt
mv newfile.txt filename.txt
(2)
sed 's/,//g'  filename.txt  > newfile.txt

最佳答案

您需要捕获第一个逗号,然后删除其他逗号。一种选择是将第一个逗号更改为其他未使用的字符(例如 Control-A),然后删除剩余的逗号,最后用逗号替换替换字符:

sed -e $'s/,/\001/; s/,//g; s/\001/,/'
(使用 Bash ANSI C quoting\001 映射到 Control-A)。
另一种机制使用 sed的标签和分支,如 Wiktor Stribiżew 所示的 answer .

关于bash - 使用 shell 脚本删除除每行第一个以外的所有逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64885548/

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