我有以下命令。
(head -1 invoice.txt && sed '1d' invoice.txt |sort -rn -k4,4) |column -ts $'\t' |less -S
head -1
打印第一行。sed "1d'
删除第一行,这样软就不会混淆sort -rn -k4,4
仅按第四列对我的文件进行排序column -ts $'\t'
按选项卡拆分文件less -S
在终端上打印它
我只想打印第一列、第四列和最后一列。这是一个小文件,但我有一个包含十四列和一个包含二十一列,我将在其上使用此模板。
我不确定是否使用cut
、awk
或print
其他命令来管道我当前的输出。
答案1
您只想显示第 1 个、第 4 个和最后一个制表符分隔的列,并且希望对第二个列中的数据进行数字排序,而忽略标题。
awk -F '\t' 'BEGIN { OFS=FS } { print $1, $4, $NF }' invoice.txt >tmpfile
{
head -n 1 tmpfile
sed '1d' tmpfile | sort -k 2,2rn
} | less -S
或者,您可以绕过临时文件并通过管道将所有内容传递awk
到复合命令中。如果需要的话{ ...; }
添加column -ts $'\t'
在前面less -S
。