Saya mencari grep untuk menampilkan semua karakter yang tidak dimulai dengan angka. Saya telah melakukan sesuatu seperti ini:
grep -v '^[1-2]*[a-zA-Z]?' -o
tapi itu tidak berhasil. Apakah Anda punya ide untuk reg exp?
grep
regular-expression
Paweł Jaworowski
sumber
sumber
-v
dengan-o
menyebabkangrep
tidak menghasilkan output.grep
gunakan ekspresi reguler dasar . Ini berarti bahwa Anda?
diperlakukan sebagai tanda tanya literal. Entah lolos dari tanda tanya\?
, atau gunakan-E
opsi untukextended
ekspresi reguler, dalam hal?
ini adalah karakter pola.Jawaban:
grep -v '^[0-9]'
Akan menampilkan semua garis yang tidak (
-v
) cocok dengan garis yang dimulai^
dengan angka[0-9]
Sebagai contoh
atau jika Anda ingin menghapus semua kata yang dimulai dengan angka
atau dengan cara pintas dan pernyataan
Sebagai contoh
sumber
\> Matches the null string at the end of a word. This is equivalent to
[[:>:]] '. `Tergantung bagaimana Anda mendefinisikan string (misalnya jika Anda menghitung karakter tanda baca ke string atau tidak). Namun demikian Anda dapat mulai dari sesuatu seperti
sumber
Untuk menghapus semua kata dari baris yang diawali dengan angka,
sed
Anda dapat melakukannya:... atau, jika Anda hanya menginginkan kata-kata yang tidak dimulai dengan angka yang dicetak masing-masing pada baris terpisah:
... di atas seharusnya cukup baik. Anda ingin menyesuaikan terjemahan
\n
ewliney///
untuk pembagi yang menurut Anda relevan. Dan,sed
implementasi tergantung, Anda mungkin juga ingin aktual<tab>
di tempat\t
backslash melarikan diri.sumber
!
menjelang'"'
swap, tetapi jika Anda menggunakanbash
Anda mungkin inginset +H
atau jikazsh
kemudianset -K
. Menurut pendapat saya, setiap!
ekspansi yang dikutip adalah kegilaan. Anda juga dapat menggunakan heredocs seperti"${0#-}" <<\CMD\nyour cmd strings\nCMD\n
untuk mendapatkan perilaku yang ditulis dalam shell interaktif."${0#-}" <<...
tipnya!"${0#-}" -s -- arg list <<\CMD\n...
Anda juga dapat mengatur parameter posisi saat doa. Menggunakan"$@"
atau*
sering bermanfaat bagi saya sebagai gantinyaarg list
. Dan denganln -s "$(command -v "${0#-}")" /tmp/new_name; cd tmp; new_name <<\CMD\n...
Anda bisa mendapatkan$0
stdin baru dan masih menangani.