2012-02-06 69 views
1

我已經編寫了一個腳本,用於從字典中找到散列值,並以每個單詞的形式「word:md5sum」形式輸出它。然後我有一個名稱文件,我想用它來放置每個名稱,後面跟着每個散列值,即 tom:word1hash tom:word2hash 。 。 bob:word1hash在循環中使用awk替換字段

等等。一切工作正常,但我無法弄清楚替代。這是我的腳本。

$#!/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; 

是我嘗試做替代。

感謝你的幫助

回答

2

嘗試更換最後一個循環的全部內容(包括cat S和awk)有:

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

謝謝。它工作完美。我希望我能爲你+1。所以你在awk表達式中使用時必須重新聲明變量? – slev 2012-02-06 05:01:59

+0

Awk不會從環境中獲取變量,不會。當然,你也可以用'awk -F:{print「'」$ name「'」「:」$ 2}''代替。 (至於+1,我相信你仍然可以通過點擊checkmark thingy來接受答案,如果它適合你,你應該這麼做=) – Arkku 2012-02-06 05:36:10