私は次の投稿を読んだ。 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にエコーし、前に「-」がつきます)
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
答え1
ファイルを1行ずつ読み取る標準的な手順は次のとおりです。
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/^/ -/'
答え2
出力をから次にパイプ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