2> перенаправление не работает с csh или tcsh.
Используйте chsh
управляйте для изменения оболочки на/bin/sh или/usr/local/bin/bash для использования 2>
перенаправление стиля.Примечание: Не изменяйте оболочку корня на/usr/local/bin/bash
csh и tcsh не могут перенаправить стандарт и ошибку отдельно, но >&
перенаправит объединенный вывод в файл.
Используя pr
от coreutils
:
pr -2 -t -l 40 -s' ' $oldfile > $newfile
Добавьте теги с помощью того же pr
и sed
:
pr -2 -t -l 40 -J -S'</b> <i>' $oldfile | sed 's|^|<il><b>|;s|$|</i></il>|' > $newfile
вывод:
<il><b>A</b> <i>apartner</i></il>
<il><b>B</b> <i>bpartner</i></il>
<il><b>C</b> <i>cpartner</i></il>
[GNU]
Если не важно использовать sed
или awk
затем я рекомендую это как самое легкое решение:
Сначала Вы разделяете файл в два:
head -n 40 file >file1
tail -n 40 file >file2
Затем Вы комбинируете строки:
paste --delimiters=" " file1 file2
Вместо head
и tail
можно использовать sed
или awk
, конечно:
sed -n -e 1,40p combinedfile >file1
sed -n -e 41,80p combinedfile >file2
awk 'NR < 41 {print;}' combinedfile >file1
awk 'NR > 40 {print;}' combinedfile >file2
Хорошо, я просто понимаю: чистое awk решение не является столь сложным, как я думал:
awk 'NR < 41 { lines[NR]=$0; next; }; {print lines[NR-40],$0}' combinedfile
paste <(head -40 file) <(tail -40 file )
– Mark McKinstry
13.06.2013, 02:06