Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 查找和附加_Awk - Fatal编程技术网

Awk 查找和附加

Awk 查找和附加,awk,Awk,伙计们,你能帮我写awk脚本吗, 我一直在考虑使用NR=FNR方法和子字符串,但不起作用 这是我的意见 文件1.txt bscrnc|cellname|cellid BBIR1|BIR004G+AW_GEUT|BI3004A BBIR1|BIR004G+AW_GEUT|BI3004B BBIR1|BIR004G+AW_GEUT|BI3004C BBIR1|BIR005G+LINGONG|BI3005A BBIR1|BIR005G+LINGONG|BI3005B file2.txt MB2|MB

伙计们,你能帮我写awk脚本吗, 我一直在考虑使用NR=FNR方法和子字符串,但不起作用

这是我的意见

文件1.txt

bscrnc|cellname|cellid
BBIR1|BIR004G+AW_GEUT|BI3004A
BBIR1|BIR004G+AW_GEUT|BI3004B
BBIR1|BIR004G+AW_GEUT|BI3004C
BBIR1|BIR005G+LINGONG|BI3005A
BBIR1|BIR005G+LINGONG|BI3005B
file2.txt

MB2|MBO
BP5|BPD
JH1|JHO
TN5|TTN
TK3|TKNJ
KT5|KTN
LG4|LGS
BI3|**BIR**
BH0|BIH
输出

bscrnc|cellname|cellid|sitename
BBIR1|BIR004G+AW_GEUT|BI3004A|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004B|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004C|BIR004
BBIR1|BIR005G+LINGONG|BI3005A|BIR005
BBIR1|BIR005G+LINGONG|BI3005B|BIR005
我们看第三个字段,第一个文件中的前3个单词是BI3,然后在第二个文件中看到BI3->BIR 然后我们将其附加到第四个字段中 最后三个字母/单词取自第一个文件中的下三个单词


多谢各位

看起来你走上了正确的道路(不过,正如这里经常指出的那样,如果你能提供更多关于你尝试过什么以及你认为问题出在哪里的细节,更多的人可能会更快地提供帮助)

bl.awk 请注意,我们希望将file2.txt放在命令行的第一位,以便在打印file1.txt中的行之前构建映射:

bash-3.2$ awk -f bl.awk file2.txt file1.txt
bscrnc|cellname|cellid|sitename
BBIR1|BIR004G+AW_GEUT|BI3004A|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004B|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004C|BIR004
BBIR1|BIR005G+LINGONG|BI3005A|BIR005
BBIR1|BIR005G+LINGONG|BI3005B|BIR005

非常感谢你!非常详细,容易理解!顺便问一下,如何区分第一个和第二个文件的代码?不客气!是的,好问题。您已经知道,
NR==FNR
(总体记录编号等于文件中的记录编号)仅对第一个文件为真。下一步是
语句表示“立即转到下一条记录,不再查看任何代码”。因此,记录通过该块的唯一方法是if
NR!=FNR
,这当然意味着它是第二个文件(或者通常是第一个以外的任何文件)。
bash-3.2$ awk -f bl.awk file2.txt file1.txt
bscrnc|cellname|cellid|sitename
BBIR1|BIR004G+AW_GEUT|BI3004A|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004B|BIR004
BBIR1|BIR004G+AW_GEUT|BI3004C|BIR004
BBIR1|BIR005G+LINGONG|BI3005A|BIR005
BBIR1|BIR005G+LINGONG|BI3005B|BIR005