-2

这是我想做的事情:

file1val=cat data1 | awk '{print $5}'

file1nam=cat data1 | awk '{print $3}'

file2val=cat data2 | awk '{print $5}'

file3nam=cat data2 | awk '{print $3}'

if file1nam = file2name 

then do some code stuff for the file1val/file2val

否则跳过字符串然后继续,直到检查完所有字符串并将结果回显到单个文件

例子:

data1 具有以下字符串

-rw-r--r-- 1 elmo red 13140667 Oct 13 22:20 65464654.tgz
-rw-r--r-- 1 oscar red 130667 Oct 13 22:20 6533464654.tgz
-rw-r--r-- 1 bert red 1313340667 Oct 13 22:20 654654.tgz

data2 具有以下字符串

-rw-r--r-- 1 elmo red 130667 Oct 11 22:20 6564654.tgz
-rw-r--r-- 1 bert red 13667 Oct 11 22:20 65464654.tgz
-rw-r--r-- 1 snuffy red 13123123140667 Oct 11 22:20 65464654.tgz

如果 elmo (filenam) 存在于 dat1 和 data 2 中,则运行它来比较它的大小:

perc=bc <<< "scale=2; ($file2val - $file1val)/$file1val * 100"

并将结果输出到文件:

elmo $perc

bert $perc

这需要遍历 data1 和 data2 文件中存在的大约 20 行中的每一行。

4

1 回答 1

0

如果我正确地管理了您的意图,您基本上想在第三个字段中加入两个文件,并根据第五个字段中的各自值计算结果?

awk 'NR==FNR { v[$3] = $5; next }
    $3 in v { printf("%s %5.2f\n", $3, ($5-v[$3])/v[$3]*100) }' data1 data2

这是一个相当常见的 awk 习语;谷歌搜索NR==FNR

于 2013-10-14T19:51:31.613 回答