gpt4 book ai didi

regex - 为什么 sed regexp 会部分且不一致地更改文本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:30 26 4
gpt4 key购买 nike

我想将 "abc ö-Ö ä-Ä å-Å def" 字符串的 ä 更改为 ae,å 更改为 aa,ö 更改为 oe。

sed -i 's/ä/ae/g' aFile | sed -i 's/å/aa/g' aFile | sed -i 's/ö/oe/g' aFile

此命令有时仅更改 ö 和 ä,有时仅更改 ä。奇怪的是,该命令有时以另一种方式工作。它有什么问题?

提前致谢

最佳答案

-i(就地编辑)和管道不混合。以下两个命令中的任何一个都可以工作:

  • sed -i -e 's/ä/ae/g' -e 's/å/aa/g' -e 's/ö/oe/g' aFile

  • sed -i 's/ä/ae/g' aFile; sed -i 's/å/aa/g' 文件; sed -i 's/ö/oe/g' aFile

基本上,问题中给出的代码中发生的事情是三个 sed 都是并行启动的,它们都想修改同一个文件。这会导致不确定的行为,因为您不可能知道三个 sed 中的哪一个从文件中读取了什么。

其次,如果使用 -i(就地编辑)调用 sed,它不会读取标准输入,也不会写入标准输出。

啊,顺便说一句,这只处理小写字母 [äåö]

关于regex - 为什么 sed regexp 会部分且不一致地更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190344/

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