Sie übertreiben es, nutzen Sie Ihre Dateistruktur, um es einfach zu halten!
Wenn wir die Zeichenfolge [United
finden Wenn Sie in einer Zeile alles von der schließenden Klammer bis zum Ende der Zeile in Großbuchstaben schreiben, erhalten Sie das gewünschte Ergebnis. Übersetzen in die Sed-Sprache,
sed '/\[United/s/].*/\U&/' file
Beachten Sie, dass das Obige spezifisch für GNU Sed ist. Falls nicht verfügbar, aber in einem POSIX-System, können Sie Ex (oder die Awk-Version von αғsнιη) mit einer ähnlichen Syntax verwenden:
printf '%s\n' 'g/\[United/s/].*/\U&/' '%p' | ex file
Um die Änderungen in der Datei zu speichern, anstatt die Ergebnisse zu drucken, ändern Sie %p
bis x
.
Mit awk
:
awk -F"[][]" '$2 ~/^United/ { $2="["$2"]"; $3=toupper($3); }1' OFS='' infile
innerhalb von [...]
wir haben beide ]
definiert und [
als Feldtrenner und dann Prüfung gegen das zweite Feld, wenn dieses mit United
beginnt Text, wenn ja, dann fügen Sie []
zurück ungefähr im zweiten Feld (ich nehme an, es gibt keine andere Spalte, die diese Zeichen neigt, sonst werden diese Felder dies übersehen); dann konvertieren wir die dritte Spalte in ihren Großbuchstabenwert; die Redewendung 1
ist Auslöser awk
default print (eine Art immer wahre Bedingung).