在循环中使用awk来替换字段

时间:2012-02-06 04:15:00

标签: bash shell sed awk

我编写了一个脚本,从字典中查找哈希值,并以“word:md5sum”的形式为每个单词输出。然后,我有一个名称文件,我想用它来放置每个名称后跟每个哈希值,即 汤姆:word1hash 汤姆:word2hash 。 。 鲍勃:word1hash

等等。一切正常,但我无法弄清楚替代。这是我的剧本。

$#!/bin/bash
#/etc/dictionaries-common/words
cat words.txt | while read line; do echo -n "$line:" >> dbHashFile.txt  
echo "$line" | md5sum | sed 's/[ ]-//g' >> dbHashFile.txt; done
cat users.txt | while read name
do
cat dbHashFile.txt >> nameHash.txt;
awk '{$1="$name"}' nameHash.txt;
cat nameHash.txt >> dbHash.txt;
done

    $awk '{$1="$name"}' nameHash.txt;

是我尝试进行替换的地方。

谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

尝试使用以下内容替换最后一个循环(catawk)的全部内容:

awk -v name="$name" -F ':' '{ print name ":" $2 }' dbHashFile.txt >>dbHash.txt