Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
如果字段3包含在字段1中,则修改字段1(Awk)_Awk - Fatal编程技术网

如果字段3包含在字段1中,则修改字段1(Awk)

如果字段3包含在字段1中,则修改字段1(Awk),awk,Awk,我试图用Awk实现这个逻辑: 如果$3在$1中,则将“$1的$3部分和1空格”替换为“”(空格)。 打印此新行和所有其他行 e、 g.在我的输出(如下)中,字段$3中的“巴黎”位于字段$1中。因此,字段$1中的“Paris”替换为“” 输入文件 field1|field2|field3 abc Paris Match|xxxx|Paris aaaaa|yyyyy|London 所需产量 field1|field2|field3 abc Match|xxxx|Paris aaaaa|yyyyy|

我试图用Awk实现这个逻辑:

如果$3在$1中,则将“$1的$3部分和1空格”替换为“”(空格)。 打印此新行和所有其他行

e、 g.在我的输出(如下)中,字段$3中的“巴黎”位于字段$1中。因此,字段$1中的“Paris”替换为“”

输入文件

field1|field2|field3
abc Paris Match|xxxx|Paris
aaaaa|yyyyy|London
所需产量

field1|field2|field3
abc Match|xxxx|Paris
aaaaa|yyyyy|London
代码已尝试(不工作)

这里有一种方法

$ awk 'BEGIN {FS=OFS="|"} 
             {sub($3,"",$1)}1' file

field1|field2|field3
abc  Match|xxxx|Paris
aaaaa|yyyyy|London
请注意,其余单词之间有两个空格

$ awk 'BEGIN{FS=OFS="|"} s=index($1,$3){$1=substr($1,1,s-1) substr($1,s+length($3)); gsub(/ +/," ",$1)} 1' file
field1|field2|field3
abc Match|xxxx|Paris
aaaaa|yyyyy|London
以上假设您不关心$1中的多个空格的任何现有序列是否也被压缩为单个空格

$ awk 'BEGIN{FS=OFS="|"} s=index($1,$3){$1=substr($1,1,s-1) substr($1,s+length($3)); gsub(/ +/," ",$1)} 1' file
field1|field2|field3
abc Match|xxxx|Paris
aaaaa|yyyyy|London