在一个文件中,我需要将所有的换行符(不是转义序列'\n',而是实际的换行符)替换为一个字符串。我在SO上找到的所有问题都是反过来的,即用一个字面换行符替换一个字符串。这是在Mac上进行的。
我已经尝试了以下方法:
但是它给我一个“未终止的替代模式”错误。
我已经尝试了以下方法:
sed -i '' 's/\
/STOP/g' file.txt
但是它给我一个“未终止的替代模式”错误。
虽然使用sed
也可以完成,但使用awk
更简单:
awk -v ORS='STOP' '1' file
将输出记录分隔符更改为STOP
,而不是默认值\n
。
更新:以下是在OSX上执行相同操作的sed版本:
sed -i.bak -n -e 'H;${x;s/\n/STOP/g;p;}' file
awk -v ORS='STOP' '1' file > _tmp && mv _tmp file
,而sed
将进行内联编辑。 - anubhavaH;${x;
和;p;}
。 - qazwsx988H
- 在模式空间后面添加一个换行符和保持空间的内容。x
- 交换模式空间和保持空间的内容。g
- 用保持空间的内容替换模式空间的内容。p
- 将模式空间写入标准输出。${...}
表示仅在最后一行执行该块。 - anubhava
-e 's/\n/STOP/g'
。 - NeronLeVelu