1

我有以下文件

Hello. this is an example
    Car=toyota Fruit=Orange Name=John
    01
    Car=toyota Fruit=Orange Name=John
    02
    Car=toyota Fruit=Orange Name=John
    03
End of the file

我在 shell 中运行这个 awk 代码

awk -F "\t" '{n=split($2,a); for(i=1 ; i<=n ; i++) {if(a[i] ~ "^Fruit*") a[i]=""} print}' myFile.txt

所以字段分隔符是 a tab。然后我使用分割第二个字段space。如果我的任何子字段(由空格分隔)以Fruit我想删除它开头。

这行不通。它不会删除它。


预期产出

Hello. this is an example
    Car=toyota Name=John
    01
    Car=toyota Name=John
    02
    Car=toyota Name=John
    03
End of the file

请不要使用额外的包裹。我希望它尽可能默认。(使用 awk、sed、grep 会很棒)

4

3 回答 3

3

如果我的任何子字段(由空格分隔)以 Fruit我想删除它开头。

您可以使用sed

$ sed 's/Fruit=[^ ]* //g' inputfile
Hello. this is an example
    Car=toyota Name=John
    01
    Car=toyota Name=John
    02
    Car=toyota Name=John
    03
End of the file
于 2013-10-31T16:28:49.317 回答
2
awk   '{gsub(/ Fruit[^ ]*/,"")}1' myFile.txt

给出:

Hello. this is an example
    Car=toyota Name=John
    01
    Car=toyota Name=John
    02
    Car=toyota Name=John
    03
End of the file
于 2013-10-31T16:31:27.620 回答
2
$ cat file                                                          
Hello. this is an example
    Car=toyota ForeName=John Name=JohnSmith 
    01
End of the file

$ sed -r 's/(^|[[:space:]])ForeName=[^[:space:]]+[[:space:]]*/\1/' file
Hello. this is an example
    Car=toyota Name=JohnSmith 
    01
End of the file

$ sed -r 's/(^|[[:space:]])Name=[^[:space:]]+[[:space:]]*/\1/' file    
Hello. this is an example
    Car=toyota ForeName=John 
    01
End of the file
于 2013-10-31T16:53:09.413 回答