这就是我想要做的事情:
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
否则跳过字符串然后继续,直到检查完所有字符串并将echo结果发送到单个文件
示例:
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
如果在dat1和数据2中存在elmo(filenam),则运行它以比较其大小:
perc=bc <<< "scale=2; ($file2val - $file1val)/$file1val * 100"
并将结果输出到文件:
elmo $perc
bert $perc
这需要循环遍历data1和data2文件中存在的20行左右。
答案 0 :(得分: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习语; google for NR==FNR