我正在尝试使用Awk实现此逻辑:
如果$ 3在$ 1中,则将“ $ 1和1空格的$ 3部分”替换为“”(空格)。 打印此新行和所有其他行。
例如在我的输出(下)中,在字段$ 3中找到“巴黎”,在字段$ 3中。因此,在$ 1字段中,“ Paris”被替换为“”。
输入文件
if (Test-Path -LiteralPath $destinationFile) {
$i = 1
Rename-Item $destinationFile ($_.BaseName + "_$i" + $_.Extension)
}
需要输出
field1|field2|field3
abc Paris Match|xxxx|Paris
aaaaa|yyyyy|London
代码尝试(无效)
field1|field2|field3
abc Match|xxxx|Paris
aaaaa|yyyyy|London
答案 0 :(得分:0)
这是一种方法
$ awk 'BEGIN {FS=OFS="|"}
{sub($3,"",$1)}1' file
field1|field2|field3
abc Match|xxxx|Paris
aaaaa|yyyyy|London
请注意,其余单词之间有两个空格。
答案 1 :(得分:0)
$ 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中多个空白的任何现有序列是否也压缩为单个空白。