GNU/Linux >> Znalost Linux >  >> Linux

Jak používat Awk k tisku pouze řádků obsahujících 5 sloupců?

Mám soubor, který obsahuje data oddělená svislou čarou. Chci vytisknout řádky, které mají pouze 5 sloupců.
Zkoušel jsem níže uvedené. To nefunguje. Jednoduše vytiskne všechny řádky. Můžete mi prosím sdělit, jak to udělat správně. Děkuji!

Obsah souboru:

10413300|Maintenance Stock Clerk A - Michelle Hanley | Michelle Hanley (1680654)|Filled||10402112
10413301|Maintenance Stock Clerk - dasda|space||10402122
MOM Parkcentrum F;Alkotás u. 53.||34535|34345|asd
Business Center Naberezhnaya Tower" Block C"|||3453|ffg|345

Zde se snažím vytisknout řádky, které mají pouze 5 sloupců.

$ gawk -F "|" '{ if (NF=5) print $0 }' data3
10413300 Maintenance Stock Clerk A - Michelle Hanley   Michelle Hanley (1680654) Filled
10413301 Maintenance Stock Clerk - dasda space  10402122
MOM Parkcentrum F;Alkotás u. 53.  34535 34345 asd
Business Center Naberezhnaya Tower Block C   3453 ffg

Výstup ukazuje, že 2 ze 4 řádků mají více než 5 sloupců.

$ gawk -F "|" '{print NF}' data3
6
5
5
6

Přijatá odpověď:

NF=5 je přiřazení, testování hodnot se provádí pomocí == . Takhle:

awk -F | 'NF==5' data3

Linux
  1. Pomocí awk vytisknete všechny sloupce od n-tého po poslední

  2. Jak vyříznout prvních n a posledních n sloupců?

  3. Jak zobrazit pouze různé řádky pomocí diff (bash)

  1. Linux – Jak používat swapovací prostor pouze v případě nouze?

  2. Jak použít sed k odstranění pouze dvojitých prázdných řádků?

  3. Jak odečíst řádky (řádky) pomocí AWK

  1. Jak povolit pouze konkrétním uživatelům bez oprávnění root používat crontab

  2. Jak vytisknout třetí sloupec do posledního sloupce?

  3. Jak mohu použít řádky souboru jako argumenty příkazu?