gpt4 book ai didi

表格格式的 Shell 脚本打印

转载 作者:行者123 更新时间:2023-12-04 23:28:46 27 4
gpt4 key购买 nike

我正在尝试使用 shell script 以表格格式打印一组值。该表有 n 行 4 列。我尝试了以下代码。

btfield=`grep -i -r ^"diag.* <string>" *.txt |awk '{print $5}'|cut -d+ -f 1 |sort -u`
ipaddr=''
i=0
format="%10s\t%10s\t%10s \n"
echo "| Function " " | IP |" " occurences |"
for a in $btfield
do
b=`grep -i -r ^"diag.* <string>" *.txt |grep -i $a |cut -d: -f 1|cut -d_ -f 2|cut -d't' -f 1`
noOcc=`grep -i -r ^"diag.* backtrace" *.txt |grep -i $a|wc -l`
#echo $b
ipaddr[i]=${b}
printf "$format" $a ${ipaddr[i]} $noOcc
i=$((i+1))
#echo $i
done

上面的代码从各种文件中找到不同的字段,并根据格式说明符进行打印。

但我看到的是输出的未对齐形式。有没有办法以表格格式打印值?列宽是固定的,如果单元格中的值超过宽度,它必须自己换行。
Sample output:

| reason | STB IP | occurences |
printf 142.25.1.100. 142.25.1.100.
142.25.1.102. 142.25.1.105. 192.168.1.100.
192.168.1.100. 192.168.1.100. 192.168.1.100.
192.168.1.106. 9
class_consol 142.25.1.105. 192.168.1.103.
2
getChar 182.168.1.102. 1
maindat 142.25.1.103. 1
_XN52getappdatafrom3EZN2232_iPjj 142.25.1.103. 142.25.1.103.
182.168.1.106.

最佳答案

而不是使用 echo ,使用 printf 命令。
您可以使用 %s对于字符串和 %d对于整数:

printf "%20s %8d %s\n" "$string1" $int1 "$unbounded_string"
您可以使用 %20s 根据您的屏幕设置空间使用 20 个字符作为字符串, %8d为整数。
格式控制选项也可用: \n : 新队 \t :选项卡(水平) \v :选项卡(垂直)

关于表格格式的 Shell 脚本打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com