在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
我在sed
或awk
中尝试的每个实现都给了我不正确的结果,因为它一直试图换行或在奇怪的位置添加输入。实现这一目标的最简单方法是什么?
到目前为止我已经尝试了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
答案 0 :(得分:4)
不确定您一直在尝试,但以下适用于Ubuntu 12.04
awk '{print $0" or"}'
或fedorqui建议
awk '$0=$0" or"'
awk '{print $0, "or"}'
[编辑]
事实证明OP的文件有CRLF换行符,因此必须先运行dos2unix
来解决格式问题
答案 1 :(得分:4)
以下两个对我有用:
sed 's/.*/& or/'
sed 's/$/ or/'
答案 2 :(得分:0)
或使用标准文本编辑器ed:
使用bash,您可以使用可爱的here-strings和ANSI-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
添加到空行中。