/ / ustawienie tablicy podziału na pustą w awk - bash, awk

ustawienie tablicy podziału na pustą w awk - bash, awk

Mam następujący plik

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

Używam tego kodu awk w powłoce

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

Separator pól to a tab. Następnie podzieliłem drugie pole za pomocą space. Jeśli którykolwiek z moich subpól (oddzielonych spacją) zaczyna się od Fruit Chcę go usunąć.

To nie działa, nie usuwa go.


Oczekiwany wynik

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

Proszę nie używać dodatkowych pakietów. Chcę to jak najbardziej domyślne. (używając awk, sed, grep byłoby świetnie)

Odpowiedzi:

3 dla odpowiedzi № 1

Jeśli którykolwiek z moich subpól (oddzielonych spacją) zaczyna się od Fruit Chcę go usunąć.

Możesz użyć 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

2 dla odpowiedzi nr 2
awk   "{gsub(/ Fruit[^ ]*/,"")}1" myFile.txt

Daje:

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

2 dla odpowiedzi nr 3
$ 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