2013-06-21 3 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 

каждый реализации я экспериментировал с в 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 

ответ

4

Не уверен, что вы пытаетесь, но следующие работы для меня на Ubuntu 12.04

awk '{print $0" or"}' 

Или, как fedorqui предлагает

awk '$0=$0" or"' 

Или, как glenn jackman предлагает

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

[EDIT]

Оказывается файл Ор имела CR разрывы строк так dos2unix пришлось запустить первым для решения вопроса формате

+0

Вы можете даже поместить его как 'awk '$ 0 = $ 0 или' 'file', печать не требуется. – fedorqui

+0

@fedorqui, каждый раз, когда я узнаю что-то новое от вас :-) – iruvar

+0

down-voter, просьба указать ввод – iruvar

4

Следующие два Работал для я:

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

+1 это была моя первая мысль ... – wmorrison365

+0

@unxnut после решения проблем с форматированием файлов. Я обнаружил, что эта команда также работала. Благодаря! – Trevor

0

Или использовать , стандартный текстовый редактор:

С вы можете использовать прекрасный 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 в пустую строку.