в чем разница между командой ls -a и ls -A

Вот метод, использующий пасту . Во-первых, удвоить -пробел во втором файле, чтобы интересные строки были параллельны. Во-вторых, склеить эти строки вместе, используя значение \0 или NUL, которое по сути не отображается как пробел. Мы можем использовать ряд схем для удвоения -интервала вывода, но вставка удобна (, например sed , как уже отмечалось, *для других см. Как я могу удвоить символы новой строки в выходном потоке).

Отображение двух исходных файлов предполагает выравнивание, которое можно выполнить с помощью двойного -интервала. Вставка двух файлов с использованием разделителя по умолчанию просто показывает это выравнивание. Реальный ответ представлен двумя способами: стандартный способ с использованием временного файла, второй с использованием подстановки процесса.

Вот фрагмент скрипта:

FILE1=${1-data1}
shift
FILE2=${1-data2}
E="expected-output"

# Utility functions: print-as-echo, print-line-with-visual-space.
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }

pl " Input $FILE1 and $FILE2, columnized to save visual space:"
paste $FILE1 $FILE2 | expand -30

pl " Expected output:"
cat $E

rm -f t0
pl " Results, paste with double-space $FILE2, default options:"
# sed '/^$/d;G' $FILE2 > t0
paste -d '\n' - /dev/null < $FILE2 > t0
paste $FILE1 t0

pl " Results with paste of NUL, \0:"
paste -d'\0' $FILE1 t0

pl " Results with paste, process substitution:"
paste -d'\0' $FILE1 <( sed '/^$/d;G' $FILE2 )

производство:

 Input data1 and data2, columnized to save visual space:
#                             yellow
stars                         white
#                             green
twinkle                       red
#                             blue
on                            
#                             
the                           
#                             
sky                           

-----
 Expected output:
#yellow
stars
#white
twinkle
#green
on
#red
the
#blue
sky

-----
 Results, paste with double-space data2, default options:
#       yellow
stars
#       white
twinkle
#       green
on
#       red
the
#       blue
sky

-----
 Results with paste of NUL, \0:
#yellow
stars
#white
twinkle
#green
on
#red
the
#blue
sky

-----
 Results with paste, process substitution:
#yellow
stars
#white
twinkle
#green
on
#red
the
#blue
sky

ЭТО было сделано в такой системе, как:

OS, ker|rel, machine: Linux, 3.16.0-7-amd64, x86_64
Distribution        : Debian 8.11 (jessie) 
bash GNU bash 4.3.30
paste (GNU coreutils) 8.23

ура, дрл

-1
31.10.2021, 05:39
0 ответов

Теги

Похожие вопросы