以前我使用kali linux来编写我的bash文件,所以命令没有问题,但是自从我使用ubuntu之后,我意识到它在ubuntu上不工作,并且还没有找到任何解决这个问题的方法。
Ori Code
tr ':' '\t' < venue.txt | tr ' ' '_____" | awk -F "\t\ '$1=Name {print $2,$3,$4,$5,$6}' Name=$Name | column -t --table-columns "Number:", "Type:", "Capacity:" , "Status:" | tr '_____' ' '
venue.txt
B:B01:Random:6:This is a long message
C:C01:Lab:5:This is message
我希望输出像这样,不使用column --table-columns,因为Ubuntu不支持它,最好是awk
(When name==b, output be like)
Number Type Capacity Status
B01 Random 6 This is a long message
2条答案
按热度按时间fdbelqdn1#
密码:
tr
不需要;awk
有-F
tr
命令有一个双引号("
),而应该有一个单引号,所以整个命令的含义发生了变化(awk
命令变成了tr
的额外参数-这会给予语法错误)。这是tr ' ' '_____'
的拼写错误吗?tr 'x' 'yyyyy'
==tr 'x' 'y'
awk -F "\t\ '...
是否为awk -F '\t' '...
的排印错误?$1=Name
将变量Name
的值赋给第一个字段。也许你想比较(==
)?$6
将始终为空,因为venue.txt
只有5个字段tr 'xxxxx' 'y'
==tr 'xxxxx' 'yyyyy'
==tr 'x' 'y'
如果您尝试打印
venue.txt
中的记录,其第一列等于bash变量Name
的值,而不打印名称本身,并将:
分隔符转换为制表符并向输出添加标题行,则可以使用单个awk
命令完成所有操作:使用
awk
来对齐列并不难,但它需要两遍,并且比使用column
更费力:ej83mcc02#
在用了这个之后不知怎么就做到了