GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ersetzen Sie ein Wort oder eine Zahl in einem Satz, der kleiner als 8 ist, mit Awk oder Sed?

Ich habe unten ein Beispiel, wo ich den Wert der Spalte 9 ersetzen muss, wenn er kleiner als 8 ist, sonst beenden oder ignorieren mit der sed- oder awk-Funktion:

) in datadbs extent size 16 next size 4 lock mode row;

Wenn ich die folgende awk-Funktion verwende, gibt sie nur den Wert aus, den ich in Spalte 9 benötige, aber ich möchte trotzdem die Satzstruktur beibehalten.

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
 awk '{if ($9 < 8 ) print 8;}'

AUSGABE:

8

Was ich will, ist das Folgende:

) in datadbs extent size 16 next size 8 lock mode row;

Akzeptierte Antwort:

Ohne awk zu kennen Ich würde vorschlagen, den Parameter zu ändern und alles auszudrucken:

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
  awk '{if ($9 < 8 ) $9 = 8; print;}'

Linux
  1. Verwenden von sed zum Suchen und Ersetzen von Textdateien in Linux

  2. Verwenden von Sed zum Suchen und Ersetzen einer Linie zwischen Musterbereichen

  3. Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)

  4. Überprüfen Sie, ob die Dateigröße größer als 1 MB ist, indem Sie die IF-Bedingung verwenden

  5. Ersetzen Sie Zeilen in einer Datei durch Zeilen in einer anderen durch die Zeilennummer

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Verwenden von grep und sed zum Suchen und Ersetzen einer Zeichenfolge

Ersetzen Sie in Bash ein Wort durch ein anderes

Löschen Sie leere Zeilen mit sed

Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

Java verwendet viel mehr Speicher als die Heap-Größe (oder die richtige Größe des Docker-Speicherlimits)