将文本附加到文件而不会断行

时间:2013-06-21 14:28:22

标签: linux perl bash sed awk

在Linux机器上,我有以下IP列表:

107.6.38.55
108.171.207.62
108.171.244.138
108.171.246.87

我想使用一些功能添加单词"或"在每一行的末尾没有打破每一行,如下所示:

107.6.38.55 or 
108.171.207.62 or
108.171.244.138 or
108.171.246.87 or

我在sedawk中尝试的每个实现都给了我不正确的结果,因为它一直试图换行或在奇怪的位置添加输入。实现这一目标的最简单方法是什么?

到目前为止我已经尝试了awk '$0=$0" or"'sed个推荐,我得到了以下格式:

107.6.38.55
 or 
108.171.207.62
 or 
108.171.244.138
 or
108.171.246.87
 or

3 个答案:

答案 0 :(得分:4)

不确定您一直在尝试,但以下适用于Ubuntu 12.04

awk '{print $0" or"}'

fedorqui建议

awk '$0=$0" or"'

glenn jackman建议

awk '{print $0, "or"}'

[编辑]

事实证明OP的文件有CRLF换行符,因此必须先运行dos2unix来解决格式问题

答案 1 :(得分:4)

以下两个对我有用:

sed 's/.*/& or/'
sed 's/$/ or/'

答案 2 :(得分:0)

或使用标准文本编辑器

使用,您可以使用可爱的here-stringsANSI-C quotings

ed -s filename <<< $',s/.$/& or/\nwq'

printf

的管道
printf "%s\n" ',s/.$/& or/' 'wq' | ed -s filename

或者如果您更喜欢echo

{ echo ',s/.$/& or/'; echo "wq"; } | ed -s filename

或以交互方式(如果您问号):

$ ed filename
,s/.$/& or/
wq

备注。我正在使用替换s/.$/& or/而不是s/$/ or/,以免将or添加到空行中。