GNU/Linux >> Belajar Linux >  >> Linux

Cetak Garis Jika Kolom Diberikan Dimulai Dengan Huruf Kapital?

Saya memiliki file seperti ini:

ID  A56
DS  /A56
DS  AGE 56

Dan saya ingin mencetak seluruh baris hanya jika kolom kedua dimulai dengan huruf kapital.

Hasil yang diharapkan:

ID  A56
DS  AGE 56

Apa yang telah saya coba sejauh ini:
awk '$2 ~ /[A-Z]/ {print $0}' file
Mencetak semuanya:huruf kapital ditemukan di kolom kedua.

awk '$2 /[A-Z]/' file
Mendapat kesalahan sintaks.

Jawaban yang Diterima:

Anda dapat menggunakan awk seperti yang disarankan @cuonglm, atau

  1. grep GNU

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

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

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. shell (mengasumsikan versi terbaru dari ksh93, zsh atau bash)

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

Linux
  1. Cetak Garis Antara (dan Termasuk) Dua Pola?

  2. Ganti Garis yang Mencocokkan Pola Dengan Garis Dari File Lain Secara Berurutan?

  3. Bagaimana Cara Mengeluarkan File &Mengabaikan Baris Yang Dimulai Dengan "?"?

  1. Duplikat, Dengan Beberapa Perubahan Kecil, Beberapa Baris Dalam File Teks?

  2. Bagaimana cara membuat file dengan ukuran tertentu di Linux?

  3. Cetak file, lewati baris X pertama, di Bash

  1. Cara tail -f file log terbaru dengan pola yang diberikan

  2. Garis grep dimulai dengan 1, tetapi bukan 10, 11, 100 dll

  3. ganti baris dalam satu file dengan baris lain dengan nomor baris