2017-02-11 10 views
0

Так что я хочу это объединить первую часть одной строки с первой частью следующей, разделенной двоеточием для каждой другой строки.с помощью sed-скрипта для объединения части текущей строки с частью следующей строки каждая другая строка

Ниже приведены входные данные, и я изо всех сил стараюсь заставить его работать.

Это то, что я хочу, чтобы выглядеть (ХОТИТЕ ЭТО):

Albania:Armenia 
Angola:Antarctica 
Argentina:American Samoa 

Это вход:

Albania,EU,http://en.wikipedia.org/wiki/Albania 
Armenia,AS,http://en.wikipedia.org/wiki/Armenia 
Angola,AF,http://en.wikipedia.org/wiki/Angola 
Antarctica,AN,http://en.wikipedia.org/wiki/Antarctica 
Argentina,SA,http://en.wikipedia.org/wiki/Argentina 
American Samoa,OC,http://en.wikipedia.org/wiki/American_Samoa 
Austria,EU,http://en.wikipedia.org/wiki/Austria 
Australia,OC,http://en.wikipedia.org/wiki/Australia 
Aruba,NA,http://en.wikipedia.org/wiki/Aruba 
Azerbaijan,AS,http://en.wikipedia.org/wiki/Azerbaijan 
Bosnia and Herzegovina,EU,http://en.wikipedia.org/wiki/Bosnia_and_Herzegovina 
Barbados,NA,http://en.wikipedia.org/wiki/Barbados 
Bangladesh,AS,http://en.wikipedia.org/wiki/Bangladesh 
Belgium,EU,http://en.wikipedia.org/wiki/Belgium 
Burkina Faso,AF,http://en.wikipedia.org/wiki/Burkina_Faso 
Bulgaria,EU,http://en.wikipedia.org/wiki/Bulgaria 
Bahrain,AS,http://en.wikipedia.org/wiki/Bahrain 
Burundi,AF,http://en.wikipedia.org/wiki/Burundi 
Benin,AF,http://en.wikipedia.org/wiki/Benin 
Saint Barthelemy,NA,http://en.wikipedia.org/wiki/Saint_Barthelemy 

То, что я придумал до сих пор это, используя N чтобы получить следующую строку, и она частично работает. «Убой» первого имени ушел, но «мусор» 2-го по-прежнему там. (Это СЭД сценарий, и я должен иметь SED скрипт, который работает со всеми другими SED скриптов, нет AWK или что-нибудь)

s/,..,.+// 
{N 
s/\n/:/ 
p 
} 

Моя попытка производит этот вывод:

Azerbaijan:Bosnia and Herzegovina,EU,http://en.wikipedia.org/wiki/Bosnia_and_Herzegovina 
Barbados:Bangladesh,AS,http://en.wikipedia.org/wiki/Bangladesh 
Belgium:Burkina Faso,AF,http://en.wikipedia.org/wiki/Burkina_Faso 
Bulgaria:Bahrain,AS,http://en.wikipedia.org/wiki/Bahrain 
Burundi:Benin,AF,http://en.wikipedia.org/wiki/Benin 

ответ

2
s/,.*//;N;s/\n/:/;s/,.*// 

Удалите все после запятой, добавьте следующую строку, замените новую строку двоеточием, удалите все после запятой.

+0

О, черт возьми, это было быстро, спасибо, что это прекрасно – fman

+0

Да, лучше, чем 'paste -d: <(cut -d, -f1 inputfile | sed '$ d') <(cut -d, -f1 inputfile | sed '1d') ', upvoted. –