我是shell腳本編程的新手,需要關於典型需求的指導。 我有兩個文件(1.master文件和2.pattern文件) 主文件包含許多字段|分隔符,只有第10和第15個字段需要根據模式文件進行更新。基於file1搜索file2中的字符串並替換
萬事達文件:
H|20170101
123|field2|field3|...|field10|field11...|field15|....|field150
...
...
T|1000000
模式文件:
Europe|EU
Australia|AU
China|CN
例如,
123|1|2|3|...|9|nice weather in europe today|11|.....
上面的行需要更換成
123|1|2|3|...|9|nice weather in EU today|11|.....
我從一個簡單的sed命令開始,通過從模式文件獲取值來替換主文件..但它不完整,因爲我不知道如何處理一個巨大的主文件 ,並且也替換了特定的字段。
while read line
do
value1=$(echo $line | awk -F"|" '{print $1}')
value2=$(echo $line | awk -F"|" '{print $2}')
sed -i 's/ '${value1}' /'${value2}'/g' master.txt
done < pattern.txt
上面的腳本對於10mb文件非常緩慢,因爲我的主文件有點巨大(100 MB)。
請幫忙。
我們是否確信模式交替不會太大而不適合關聯數組? – cdarke
@cdarke沒有,但一個100 MB的主人。 Pfft。我們大膽的, –
@cdarke我散列模式文件,並通過主反覆。我認爲這很好。 –