Bash – эхо по строкам, игнорируя пространство между линиями

Я прочитал сообщение: bash – замените место новой строкой , но это не помогло решить мою проблему.

[My Directory] [root@testlabs Config]# ls Archive Backup_Files config_file.tgz hostname1-config.uac hostname2-config.uac hostname3-config.uac My-config_17Oct2014.tgz non_extension-config_file1 non_extension-config_file2 [root@testlabs Config]# 

Мне нужно отобразить список результатов контрольной суммы MD5 из файла. Я могу это сделать:

 ##IDENTIFY MD5 CHECKSUM## //To output the md5sum of the original file with a correct format to a temp file [md5<space><space>file_name] ls $FULL_FILE_NAME | md5sum $FULL_FILE_NAME > /tmp/md5sum.tmp //To compare the md5sum of the orignal file with the md5sum of the backup copies in the archive directory ls $CONFIG_ARCHIVE_DIR | grep -i --text $CONFIG_FILE_HOSTNAME-$FILE_TIMESTAMP.tgz | md5sum -c /tmp/md5sum.tmp >> /tmp/md5sum2.tmp ##COMPARING MD5 CHECKSUM## if [ -s /tmp/md5sum2.tmp ]; then echo "" echo "Comparison of MD5 for files archived:" echo '---------------------------------------' /bin/sort -d /tmp/md5sum2.tmp fi 

и это будет результат, когда он был выполнен: (эхо СОДЕРЖАНИЯ в /tmp/md5sum2.tmp)

 Comparison of MD5 for files archived: --------------------------------------- config_file.tgz: OK hostname1-config.uac: OK hostname2-config.uac: OK hostname3-config.uac: OK My-config_17Oct2014.tgz: OK non_extension-config_file1: OK non_extension-config_file1: OK 

## РАЗЫСКИВАЕТСЯ ##

Однако я хотел бы, чтобы результат отображался следующим образом:

 Comparison of MD5 for files archived: --------------------------------------- - config_file.tgz: OK - hostname1-config.uac: OK - hostname2-config.uac: OK - hostname3-config.uac: OK - My-config_17Oct2014.tgz: OK - non_extension-config_file1: OK - non_extension-config_file2: OK 


Я попытался сделать это, (эхо СОДЕРЖАНИЕ /tmp/md5sum2.tmp в /tmp/md5sum3.tmp с '-' infront)

1)

  ##COMPARING MD5 CHECKSUM## if [ -s /tmp/md5sum2.tmp ]; then echo "" echo "Comparison of MD5 for files archived:" echo '---------------------------------------' /bin/sort -d /tmp/md5sum2.tmp for CONFIG_FILES in `/bin/cat /tmp/md5sum2.tmp` do /bin/sort -d /tmp/md5sum2.tmp | grep $CONFIG_FILES > /tmp/md5sum3.tmp done for MD5_COMPARE in $(/bin/sort -d /tmp/md5sum3.tmp) do echo -e " - $MD5_COMPARE\n" done fi 

Результат 1)

 Comparison of MD5 for files archived: --------------------------------------- - config_file.tgz: - OK - hostname1-config.uac: - OK - hostname2-config.uac: - OK - hostname3-config.uac: - OK - My-config_17Oct2014.tgz.tgz: - OK - non_extension-config_file1: - OK - non_extension-config_file2: - OK 

2)

 for MD5_COMPARE in $(/bin/sort -d /tmp/md5sum3.tmp) do echo -n " - $MD5_COMPARE" done 

Результат 2)

  Comparison of MD5 for files archived: --------------------------------------- - config_file.tgz: - OK - hostname1-config.uac: - OK - hostname2-config.uac: - OK - hostname3-config.uac: - OK - My-config_17Oct2014.tgz: - OK - non_extension-config_file1: - OK - non_extension-config_file2: - OK 

2 Solutions collect form web for “Bash – эхо по строкам, игнорируя пространство между линиями”

Чтобы прочитать стандартную процедуру строки по строке, выполните следующие действия:

 while IFS= read -r MD5_COMPARE do echo "- $MD5_COMPARE" done < /tmp/md5sum2.tmp | /bin/sort -d 

Но sed тоже должен работать

 /bin/sort -d /tmp/md5sum2.tmp | sed 's/^/ -/' 

Просто проведите вывод из sort в sed и замените одно место на:

 if [ -s /tmp/md5sum2.tmp ]; then echo "" echo "Comparison of MD5 for files archived:" echo '---------------------------------------' /bin/sort -d /tmp/md5sum2.tmp | sed 's/\(^ *\) \( [^ ]\)/\1-\2/' fi 

Результат:

 Comparison of MD5 for files archived: --------------------------------------- - My-config_17Oct2014.tgz: OK - config_file.tgz: OK - hostname1-config.uac: OK - hostname2-config.uac: OK - hostname3-config.uac: OK - non_extension-config_file1: OK - non_extension-config_file1: OK 
  • Запустите команду, сохраненную в переменной, чтобы эхо в файл
  • Как поместить значение команд netcat echo pipe в переменную
  • Есть ли альтернатива эхо-демон для отображения ip?
  • Печать и обновление переменной внутри
  • понимание выхода эха, за которым следуют некоторые восклицательные знаки
  • 'echo' ест часть сообщения
  • Разница между «cat <file.txt» и «echo <file.txt»
  • Не допускайте зависания «echo STRING> fifo», когда ничего не читает, что FIFO
  • echo * | xargs -n1 echo, есть ли более короткий, более элегантный способ линейного перечисления?
  • Как эхо ударить!
  • создать файл XML с помощью сценария bash
  • Linux и Unix - лучшая ОС в мире.