首页 > 解决方案 > 目录中的长列表值和计算值

问题描述

编写一个 shell 脚本以使用awk命令显示长列表值,但打印字段的双倍值并存储为单独的字段,例如:

two text files a.txt,b.txt

我有

ls -l -g | awk print{ 2 * $2}

预期成绩:

-rw-r--r-- 1 root.usersgrp 120 dec 24 11.21 a.txt
-rw-r--r-- 2 root.usersgrp 20 dec 24 11.22 b.txt

需要的实际输出

-rw-r--r-- 1 root.usersgrp 20 dec 24 11.22 b.txt 40

这里我需要 40 是单独字段中 20 的两倍值

标签: shellunixawk

解决方案


这是你所期待的吗?

/tmp> ls -l vgrs.txt data.csv
-rw-r--r-- 1 xxxx yyyy  96 Dec 24 08:10 data.csv
-rw-r--r-- 1 xxxx yyyy 148 Dec 24 08:02 vgrs.txt
/tmp> ls -l vgrs.txt data.csv | awk ' $(NF+1)=$5*2 '
-rw-r--r-- 1 xxxx yyyy 96 Dec 24 08:10 data.csv 192
-rw-r--r-- 1 xxxx yyyy 148 Dec 24 08:02 vgrs.txt 296
/tmp>

解释:

如果您有 n 列,则可以通过操作现有列使用 $(NF+1) 再添加一列。


推荐阅读