regex - 带有正则表达式问题的 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)
解决方案
perl
如果前一行有一个选项卡,您可以使用此命令连接行:
perl -i -0777 -pe 's/(\S\t)\n(?!\z)/$1\t/g' excel.log
(?!\z)
是对文件最后一行的匹配失败的负前瞻。
推荐阅读
- tikz - 在 tikz 中绘制辅助线
- r - 为 R 包中示例中使用的数据集生成文档
- python - 警告:“pysqlite3”的旧版轮子没有创建文件。- 我如何构建一个非传统版本的轮子?
- android - setOnClickListener 不适用于 Kotlin 中的图像滑块
- rust - 如何使用 Rocket Web 框架代理/转发数据?
- laravel - 为本地 laravel REST API 使用 http://192.168 地址
- android - 强制 Android Studio 始终为 Gradle 使用自己的 JRE
- javascript - javascript中未知的导入路径格式
- javascript - 在内部执行 XSS当 >< 被过滤并且无法使用 '" 进行转义时
- django - django social 登录后不返回用户