GNU/Linux >> Belajar Linux >  >> Linux

Bisakah GNU Grep mengeluarkan grup yang dipilih?

Anda dapat menggunakan sed untuk ini. Di BSD sed :

echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"

Atau, tanpa -E opsi:

sed "s/.*'\([^']\+\)'.*/\1/"

Ini tidak berfungsi untuk input multiline. Untuk itu Anda membutuhkan:

sed -n "s/.*'\([^']\+\)'.*/\1/p"

Meskipun grep tidak dapat menampilkan grup tertentu, Anda dapat menggunakan pernyataan lookahead dan behind untuk mencapai apa yang Anda inginkan:

echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"


Anda dapat menggunakan \K untuk menyetel ulang dan membuang teks pencocokan sebelah kiri beserta lookahead yang tidak ditambahkan ke teks pencocokan:

$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar

grep GNU saja.


Linux
  1. Bisakah Sed Mengganti Karakter Baris Baru?

  2. Bagaimana Cara Memulai Grep Multi-utas Di Terminal?

  3. Ekstrak Substring Menurut Regexp Dengan Sed Atau Grep?

  1. Bagaimana cara menghentikan sed dari buffering?

  2. grep:penangkapan grup

  3. Bagaimana cara menyalurkan output dari grep ke cp?

  1. Bagaimana saya bisa memfilter hasil unik dari keluaran grep?

  2. Bagaimana saya bisa mengurutkan berdasarkan pemilik dan grup?

  3. Bagaimana saya bisa mengurutkan output du -h berdasarkan ukuran