如果字段3包含在字段1中,则修改字段1(Awk)
我试图用Awk实现这个逻辑: 如果$3在$1中,则将“$1的$3部分和1空格”替换为“”(空格)。 打印此新行和所有其他行 e、 g.在我的输出(如下)中,字段$3中的“巴黎”位于字段$1中。因此,字段$1中的“Paris”替换为“” 输入文件如果字段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|
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