GNU/Linux >> Znalost Linux >  >> Linux

Nahradit slovo nebo číslo ve větě, která je menší než 8, pomocí Awk nebo Sed?

Níže mám příklad, kdy potřebuji nahradit hodnotu sloupce 9, pokud je menší než 8, jinak ukončete nebo ignorujte pomocí funkce sed nebo awk:

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

Pokud použiji níže uvedenou funkci awk, vytiskne pouze hodnotu, kterou potřebuji ve sloupci 9, ale stále chci zachovat strukturu věty.

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

VÝSTUP:

8

Co chci, je níže:

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

Přijatá odpověď:

Bez znalosti jakéhokoli awk Navrhoval bych změnit parametr a vše vytisknout:

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

Linux
  1. Pomocí Sed k vyhledání a nahrazení čáry mezi rozsahy vzorů

  2. Velké první písmeno slov pomocí SED

  3. Použití grep a sed k nalezení a nahrazení řetězce

  1. Odeberte konkrétní znak pomocí awk nebo sed

  2. Nahraďte slovo jiným v bash

  3. najít soubory, které mají číslo v názvu souboru větší než

  1. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  2. Použití příkazů Sed,ex a perl k vyhledání a nahrazení textu v Linuxu

  3. Najděte a nahraďte text v souboru mezi rozsahy řádků pomocí sed