slk3411
请教一个ip地址完全匹配的问题!
目的:根据standard.txt文件提供的ip地址和名称对应关系,把目标文件的地址更换成名称。
问题:由于ip地址没有完全匹配,导致有的地址匹配错误(名称也就错了),请各位帮助解决此问题
$cat standard.txt
61.148.0.2 C1-zgc-TTT
61.148.0.38 A2-zgc-TTT
61.148.0.39 A1-zgc-TTT
61.148.0.42 A3-zgc-TTT
$cat source.txt
-rw-r--r-- 1 ipnet mqm 28069 2008-06-20 09:01 61.148.0.28_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 31348 2008-06-20 09:01 61.148.0.24_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 28065 2008-06-20 09:01 61.148.0.23_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 28635 2008-06-20 09:01 61.148.0.29_2008-06-20-00-50-09.txt
处理脚本如下:
$more test.sh
#!/usr/bin/bash
while read line
do {
ipaddress=`echo $line | cut -d' ' -f 1`
alias=`echo $line | cut -d' ' -f 2`
sed s/${ipaddress}/${alias}/ source.txt>result.txt
mv result.txt source.txt
}
done<standard.txt
输出的结果如下:
$more source.txt
-rw-r--r-- 1 ipnet mqm 28069 2008-06-20 09:01 C1-zgc-TTT8_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 31348 2008-06-20 09:01 C1-zgc-TTT4_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 28065 2008-06-20 09:01 C1-zgc-TTT3_2008-06-20-00-50-09.txt
-rw-r--r-- 1 ipnet mqm 28635 2008-06-20 09:01 C1-zgc-TTT9_2008-06-20-00-50-09.txt
err7dd
try:
[CODE]awk 'NR==FNR{a[++idx]=$1;b[idx]=$2;}; NR>FNR{
for(i=1;i<=idx;i++)
{
t=substr($8,0,length(a[i]));
s=substr($8,length(a[i])+1,1);
if(t==a[i] && s=="_")
{
sub(a[i],b[i],$0);
}
}
print $0;
}' standard.txt source.txt
[/CODE]