GNU/Linux >> Znalost Linux >  >> Linux

Tisknout řádky, pokud daný sloupec začíná velkým písmenem?

Mám takový soubor:

ID  A56
DS  /A56
DS  AGE 56

A chtěl bych vytisknout celý řádek, pouze pokud druhý sloupec začíná velkým písmenem.

Očekávaný výstup:

ID  A56
DS  AGE 56

Co jsem zatím zkoušel:
awk '$2 ~ /[A-Z]/ {print $0}' file
Vytiskne vše:velká písmena se nacházejí ve druhém sloupci.

awk '$2 /[A-Z]/' file
Dostane chybu syntaxe.

Přijatá odpověď:

Můžete použít awk jak navrhl @cuonglm nebo

  1. GNU grep

    grep -P '^[^s]+s+[A-Z]' file 
    
  2. Perl

    perl -lane 'print if $F[1]=~/^[A-Z]/' file
    
  3. GNU sed

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. shell (předpokládá nejnovější verzi ksh93, zsh nebo bash)

    while read -r a b; do 
        [[ $b =~ ^[A-Z] ]] && printf "%s %sn" "$a" "$b"; 
    done < file 
    

Linux
  1. Nahradit řádky odpovídající vzoru řádky z jiného souboru v pořadí?

  2. Jak vytisknout soubor a ignorovat řádky, které začínají „?“?

  3. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  1. Nalezení řádků s nejnižší hodnotou ve třetím sloupci vzhledem k výsledkům Grepu?

  2. Jak vytvořit soubor s danou velikostí v Linuxu?

  3. Vytiskněte soubor s vynecháním prvních X řádků v Bash

  1. Jak ohraničit -f nejnovější soubor protokolu s daným vzorem

  2. Nelze přejmenovat soubor, jehož název začíná pomlčkou

  3. Grep řádky začínající 1, ale ne 10, 11, 100 atd