2013-06-21 40 views
0

在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 

回答

4

不知道你一直在努力,但對我在Ubuntu 12.04

awk '{print $0" or"}' 
以下工作

或者爲fedorqui表明

awk '$0=$0" or"' 

或者作爲glenn jackman表明

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

[編輯]

原來,OP的文件有CRLF換行符所以dos2unix必須先運行,以解決格式問題

+0

你甚至可以像'awk'$ 0 = $ 0「或者''文件一樣,不需要打印。 – fedorqui

+0

@fedorqui,每當我從你身上學到新東西時:-) – iruvar

+0

向下選民,請提供一些輸入 – iruvar

4

以下兩個工作了我:

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

+1這是我的第一個想法... – wmorrison365

+0

@unxnut解決文件格式問題後,我發現這個命令也工作。謝謝! – Trevor

0

或者使用,標準的文本編輯器:

隨着你可以ANSI-C quotings

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

或管道使用可愛here-stringsprintf

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