将 VI 宏替换为 Linux 等效宏

将 VI 宏替换为 Linux 等效宏

我的文件到达 Linux 服务器并^M在 VI 中看到时包含字符且文件格式 = unix,(ff=unix)

我想将第 1-4 行变成第 9-10 行。 在此输入图像描述

我的 vi 宏解决了我的问题。 /\r/\rxJ

它找到并删除^M,然后将该行连接到上一行。

如何在 sed、awk 或某些 Unix 实用程序中完成此操作?

答案1

尝试以下任一方法:

awk -vORS= '{print sub(/\r$/,"") ? $0" " : $0"\n"}' < infile > outfile

awk 'ORS = sub(/\r$/,"") ? " " : "\n"' < infile > outfile

perl -pe 's/\r\n/ /' < infile > outfile

或就地:

perl -pe 's/\r\n/ /' -i file

相关内容