gpt4 book ai didi

bash - 将\n 替换为空白但保留\r\n 使用 sed/tr

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

我的输入看起来像:

Line 1\n 
More Line 1\r\n
Line 2\n
More Line 2\r\n

我要生产

Line 1 More Line 1\r\n
Line 2 More Line 2\r\n

使用 sed 或 tr。我尝试了以下但它不起作用:

sed -e 's/([^\r])\n/ /g' in_file > out_file

out_file 仍然看起来像 in_file。我还可以选择编写 Python 脚本。

最佳答案

尝试:

sed '/[^\r]$/{N; s/\n/ /}' in_file

工作原理:

  • /[^\r]$/

    这只选择在换行符之前没有有回车符的行。花括号中的命令仅对匹配此正则表达式的行执行。

  • N

    对于那些选定的行,这将向其附加一个换行符,然后读取下一行并附加它。

  • s/\n//

    这会将不需要的换行符替换为空格。

讨论

当 sed 一次读入一行但不读入该行后面的换行符时。因此,在下面,\n 永远不会匹配:

sed -e 's/([^\r])\n/ /g'

我们可以匹配 [^\r]$,其中 $ 表示行尾,但这仍然不包括 \n.

这就是为什么上面使用 N 命令读取下一行,并在添加换行符后将其添加到模式空间的原因。这使换行符对我们可见,我们可以将其删除。

关于bash - 将\n 替换为空白但保留\r\n 使用 sed/tr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168689/

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