Конкатенация строк в bash

большинство программ командной строки работают только в одной строке за раз.

могу ли я использовать общую утилиту командной строки (echo, sed, awk и т. д.) Для объединения каждого набора из двух строк или мне нужно написать сценарий/программу с нуля, чтобы сделать это?

$ cat myFile
line 1
line 2
line 3
line 4

$ cat myFile | __somecommand__
line 1line 2
line 3line 4

5 ответов


sed 'N;s/\n/ /;'

захватите следующую строку и замените символ новой строки пробелом.

seq 1 6 | sed 'N;s/\n/ /;'
1 2
3 4
5 6

$ awk 'ORS=(NR%2)?" ":"\n"' file
line 1 line 2
line 3 line 4

$ paste - -  < file
line 1  line 2
line 3  line 4

не конкретная команда, но этот фрагмент оболочки должен сделать трюк:

cat myFile | while read line; do echo -n $line; [ "${i}" ] && echo && i= || i=1 ; done

вы также можете использовать Perl как:

$ perl -pe 'chomp;$i++;unless($i%2){$_.="\n"};' < file
line 1line 2
line 3line 4

вот версия сценария оболочки, которая не должна переключать флаг:

while read line1; do read line2; echo $line1$line2; done < inputfile