如何用sed或其他命令行流编辑器将字符串AAA替换为回车符^M
用sed或awk替换指定行中的字符串为回车符
sed 实现方式
方式1:手动输入回车符(^M)
在终端执行命令时,^M需要通过Ctrl+V 后按 Ctrl+M的方式输入(终端会显示为^M):
sed '/abcAAA/s/AAA/^M/' input.txt
如果要替换所有包含AAA的行(比如你提供的示例中的123AAA行),将匹配条件改为/AAA/即可:
sed '/AAA/s/AAA/^M/' input.txt
方式2:使用Shell转义字符(bash/zsh 适用)
利用Shell的ANSI-C转义语法$'\r'直接表示回车符,无需手动输入特殊字符:
sed '/abcAAA/s/AAA/'$'\r''/' input.txt
直接修改原文件
如果需要直接修改输入文件而非仅输出结果,GNU sed可添加-i参数:
sed -i '/abcAAA/s/AAA/'$'\r''/' input.txt
BSD sed(如macOS系统)需添加空参数:
sed -i '' '/abcAAA/s/AAA/'$'\r''/' input.txt
awk 实现方式
使用awk的sub函数完成替换,用\r表示回车符:
awk '/abcAAA/{sub(/AAA/, "\r")}1' input.txt
解释:/abcAAA/匹配目标行,sub执行替换操作,末尾的1用于输出所有行(包括未修改的行)。
内容的提问来源于stack exchange,提问作者doraemon
相关产品推荐
相关产品推荐

