首页 > 解决方案 > 带有正则表达式问题的 Linux CentOS sed 命令

问题描述

我在 CentOS 下有一个 txt 文件,我想将其中的任何内容替换"\t\n""\t\t". 我试过这个:

sed -i -E 's/\t\n/\t\t/g' myfile.txt

但它不起作用。我不知道 CentOS 是否不支持 sed 中的正则表达式。

任何帮助表示赞赏!

ps

输入(两行):

1\t2\t3\t$ 4\t5\t6\t$

输出(一行):1\t2\t\3\t\t4\t5\t6\t\t

在 Editplus 中,查找正则表达式是 '\t\n' 而替换是 '\t\t'。然后所有以 '\t\n' 结尾的行将变成一行,并且每个 '\n' 都被一个额外的 '\t' 替换。

ps

我的文件是这样读取的(cat -A myfile.txt)

在此处输入图像描述


标签: regexsedtabscarriage-return

解决方案


perl如果前一行有一个选项卡,您可以使用此命令连接行:

perl -i -0777 -pe 's/(\S\t)\n(?!\z)/$1\t/g' excel.log

(?!\z)是对文件最后一行的匹配失败的负前瞻。


推荐阅读