Přeháníte to, využijte svou strukturu souborů, aby to bylo jednoduché!
Pokud najdeme řetězec [United v řádku, velká písmena od závěrečné složené závorky až po konec řádku dává výsledek, po kterém toužíte. Překlad do jazyka Sed,
sed '/\[United/s/].*/\U&/' file
Všimněte si, že výše uvedené je specifické pro GNU Sed. Pokud není k dispozici, ale v systému POSIX, můžete použít Ex (nebo se podívejte na verzi Awk od αғsнιη) s podobnou syntaxí:
printf '%s\n' 'g/\[United/s/].*/\U&/' '%p' | ex file
Chcete-li uložit změny do souboru místo tisku výsledků, změňte %p do x .
Pomocí awk :
awk -F"[][]" '$2 ~/^United/ { $2="["$2"]"; $3=toupper($3); }1' OFS='' infile
v rámci [...] definovali jsme oba ] a [ jako oddělovač polí a poté kontrolu proti druhému poli, pokud začíná United text, pokud ano, přidejte zpět [] kolem druhého pole (předpokládám, že neexistuje žádný jiný sloupec, který by tyto znaky naklonil, jinak toto pole bude chybět); pak převedeme třetí sloupec na jeho hodnotu na velká písmena; idiom 1 je spouštěč awk výchozí tisk (druh vždy pravdivé podmínky).