当前位置: 技术问答>linux和unix
[AWK]大文件替换
来源: 互联网 发布时间:2017-04-09
本文导语: 请教各位大牛 我有两个文件,一个1.txt如下 !Record 1 START_MSG 14:15:00:000; TYPE Record Response; Size 14; Ladd FF1111; RIC_Name CFG; Status 0; Temp_No 2; RTL 0; END_FIC_Dat...
请教各位大牛
我有两个文件,一个1.txt如下
!Record 1
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name CFG;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
一个包含10million的字符如下2.txt
ABC
DEF
GHI
需要把1.txt文件中RIC_Name CFG;这一行的CFG分别替换成ABC, DEF, GHI,该怎么做呢?
!Record 1
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name ABC;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name DEF;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name GHI;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
写了一个awk脚本
BEGIN {
FS = " ";
while(getline0)
{
print $1;
nvar = $1;
}
}
{
if($1 == "RIC_Name")
{
$2 = " "nvar";";
}
print ;
}
但是每次只能把2.txt里面最后一行字符替换进去.
大虾们帮我看看该怎么改呢??
我有两个文件,一个1.txt如下
!Record 1
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name CFG;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
一个包含10million的字符如下2.txt
ABC
DEF
GHI
需要把1.txt文件中RIC_Name CFG;这一行的CFG分别替换成ABC, DEF, GHI,该怎么做呢?
!Record 1
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name ABC;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name DEF;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
START_MSG 14:15:00:000;
TYPE Record Response;
Size 14;
Ladd FF1111;
RIC_Name GHI;
Status 0;
Temp_No 2;
RTL 0;
END_FIC_Data;
END_MSG;
!
写了一个awk脚本
BEGIN {
FS = " ";
while(getline0)
{
print $1;
nvar = $1;
}
}
{
if($1 == "RIC_Name")
{
$2 = " "nvar";";
}
print ;
}
但是每次只能把2.txt里面最后一行字符替换进去.
大虾们帮我看看该怎么改呢??
|
windos不太清楚没用过,不过改成""这样的话,目测不靠谱,里面好多双引号呢,目测不到那个和那个匹配啊....