我需要在表列中显示 grep 输出。
我有一个脚本,可以从 whois 获取信息以显示特定域名的创建、到期日期和 ns 服务器。
#!/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
我总是使用逗号作为 CSV 文件的分隔符,以便在 opencalc 或 excel 中更好地查看。尝试以下我没有测试过的代码。
#!/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
ie将信息保存在 csv 中\t
,询问此问题的目标是漂亮地打印列中的数据
只要尝试一下,它就会起作用
column -t -s$'\t' -n table.csv