/ / настройка на разделен масив на празен в awk - bash, awk

задаване на разделяне на масив за празно в awk - bash, awk

Имам следния файл

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

Пускам този 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 би било страхотно)

Отговори:

3 за отговор № 1

Ако някое от моите подполета (които са разделени от интервал) започва с 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

2 за отговор № 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

2 за отговор № 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