テーブル列にgrep出力を表示する

テーブル列にgrep出力を表示する

テーブル列に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

区切り文字を使用してTABcsvに情報を保存できると述べたように\t、この質問の目的は列のデータを見やすく印刷することです。

ただ試してみると効果があります。

column  -t -s$'\t' -n table.csv

関連情報