テーブル列にgrep出力を表示する必要があります。
特定のドメイン名の生成、有効期限、およびnsサーバーを表示するためにwhoisから情報を取得するスクリプトがあります。
#!/bin/sh
cat domain-file.txt | while read line ; do
lLine="$(echo $line | tr '[A-Z]' '[a-z]')"
echo "$lLine\t" >> table.csv;
sleep 3
echo "\n$lLine"
host=whois.nic.re
created=$(whois -h $host $lLine | egrep -i 'created:')
echo "$created\t" >> table.csv
sleep 2
expire=$(whois -h $host $lLine | egrep -i 'Expiry Date:')
echo "$expire\t" >> table.csv
sleep 2
nserver=$(whois -h $host $lLine | egrep -i 'nserver:')
echo "$nserver\t" >> table.csv
echo "------------------------------------------" >> table.csv
done
exit
次の表に出力を表示したいことを除いて、すべてがうまく動作しています。
Domain Created Date Expiry date NS
abcd.com 19/01/2018 19/01/2019 ns.abcd.com ns2.abcd.com
1234.com 19/01/2018 19/01/2019 ns.1234.com ns2.1234.com
代わりに、次のような出力を取得します。
abcd.com
Created date: 19/01/2018
Expiry date: 19/01/2019
nserver: ns.abcd.com
nserver: ns2.abcd.com
------------------------------------------
1234.com
Created date: 19/01/2018
Expiry date: 19/01/2019
nserver: ns.1234.com
nserver: ns2.1234.com
答え1
私はopencalcまたはExcelでより良いビューのために常にCSVファイルの区切り文字としてコンマを使用します。まだテストしていない次のコードを試してください。
#!/bin/sh
echo -e "Domain,Created Date,Expiry_date,NS" > table.csv
cat domain-file.txt | while read line ;
do
lLine="$(echo $line | tr '[A-Z]' '[a-z]')"
host=whois.nic.re
created=$(whois -h $host $lLine | egrep -i 'created:' | awk -F ':' '{print $NF}')
expire=$(whois -h $host $lLine | egrep -i 'Expiry Date:' | awk -F ':' '{print $NF}')
nserver=$(whois -h $host $lLine | egrep -i 'nserver:' | awk -F ':' '{print $NF}')
echo -e "$lLine,$created,$expire,$nserver" >> table.csv
done
exit
端末で結果を確認してください。
column -t -s',' table.csv
答え2
区切り文字を使用してTAB
csvに情報を保存できると述べたように\t
、この質問の目的は列のデータを見やすく印刷することです。
ただ試してみると効果があります。
column -t -s$'\t' -n table.csv