Jadual Kandungan
grep简介
grep使用方式
扩展grep使用方式
grep正则表达式元字符
练习题:
Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Linux中关于grep以及正则表达式的代码案例详解

Linux中关于grep以及正则表达式的代码案例详解

Jul 26, 2017 pm 04:03 PM
grep linux biasa

grep简介

  grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。

grep使用方式

  使用方式:grep [OPTIONS] PATTERN [FILE...]

  grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

  常用选项:

  --color=auto:对匹配到的文本着色后进行高亮显示;

   -i:忽略字符的大小写

  -o:仅显示匹配到的字符串

  -v:显示不能被模式匹配到的行

  -E:支持使用扩展的正则表达式

  -q:静默模式,即不输出任何信息

  -A #:显示被模式匹配的行及其后#行

  -B #:显示被模式匹配的行及其前#行

  -C #:显示被模式匹配的行及其前后各#行

  :使用grep匹配时需使用双引号引起来(单引号为强引用),防止被系统误认为参数或者特殊命令而报错。

扩展grep使用方式

  使用方式:egrep [OPTIONS] PATTERN [FILE...] 

  grep -E [OPTIONS] PATTERN [FILE...]

  -i:忽略字符的大小写
  -o:仅显示匹配到的字符串本身
  -v:显示不被模式匹配到的行
  -q:静默模式,即不输出任何信息
  -A #:显示被模式匹配的行及其后#行
  -B #:显示被模式匹配的行及其前#行
  -C #:显示被模式匹配的行及其前后各#行
  -G:支持基本正则表达式

grep正则表达式元字符

  ‘^‘: 锚定行首

  ‘$’: 锚定行尾 

  ‘.‘: 匹配任一一个字符

  ‘*’: 匹配零个或多个先前字符 

  ‘\?‘:匹配其前面的字符0次或者1次;

  ‘\+’:匹配其前面的字符1次或者多次;

  ‘\{m\}‘:匹配其前面的字符m次(\为转义字符)

  ‘\{m,n\}’:匹配其前面的字符至少m次,至多n次

  ‘[]‘: 匹配一个指定范围内的字符 | ‘[^]’匹配指定范围外的任意单个字符

  ‘\<‘或‘\b’:锚定词首,‘\>’或‘\b’:锚定词尾(可用\:匹配完整单词)

  ‘\(\)’:将多个字符当做一个整体进行处理

  后向引用:引用前面的分组括号中的模式所匹配到的字符

  分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:

  \1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容

  \2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容...

  扩展正则表达式与正则表达式略有不同:

  '[]':依旧匹配指定范围内的任意单个字符;但是有很多特殊匹配方式。

    [:digit:] 匹配任意单个数字

    [:lower:] 匹配任意单个小写字母               

    [:upper:] 匹配任意单个大写字母

    [:alpha:] 匹配任意单个字母

    [:alnum:] 匹配任意单个字母或数字

    [:punct:] 匹配任意单个符号

    [:space:] 匹配单个空格

  一些地方取消了转义字符的使用:

  ‘?‘:匹配其前面的字符0次或者1次;

  ‘+’:匹配其前面的字符1次或者多次;

  ‘{m}‘:匹配其前面的字符m次(\为转义字符)

  ‘{m,n}’:匹配其前面的字符至少m次,至多n次

  ():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。

  ‘|’:或(:‘C|cat’为C与cat,‘(C|c)at才是Cat与cat’)

练习题:

  1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次


[root@localhost ~]# who | cut -d&#39; &#39; -f1|uniqroot
Salin selepas log masuk

  2、取出最后登录到当前系统的用户的相关信息


[root@localhost ~]# id `last | head -1 | cut -d&#39; &#39; -f1`
uid=0(root) gid=0(root) groups=0(root)
Salin selepas log masuk

  3.取出当前系统上被用户当做其默认shell最多的那个shell


[root@localhost ~]# cut -d&#39;:&#39; -f7 /etc/passwd|uniq -c|sort -n|tail -1|cut -d&#39; &#39; -f7/sbin/nologin
Salin selepas log masuk

  4.将/etc/passd中的第三个字段设置最大的后10个用户的信息全部改为大写保存至/tmp/maxuser.txt文件中


[root@localhost ~]# sort -t&#39;:&#39; -k3 -n /etc/passwd|tail -10|tr &#39;a-z&#39; &#39;A-Z&#39; >/tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt 
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN
NGINX:X:996:994:NGINX WEB SERVER:/VAR/LIB/NGINX:/SBIN/NOLOGIN
CHRONY:X:997:995::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN
SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN
DINGJIE:X:1000:1000:DINGJIE:/HOME/DINGJIE:/BIN/BASH
JEFF:X:1001:1024:WOSHIDASHUAIBI:/HOME/JEFF:/BIN/BASH
EGON:X:1002:1002::/HOME/EGON:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
Salin selepas log masuk

  5.取出当前主机的IP地址


[root@localhost ~]# ifconfig | egrep "inet.*broadcast.*"|cut -d&#39; &#39; -f10192.168.0.133
Salin selepas log masuk

  6.列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中


[root@localhost ~]# find /etc -name &#39;*.conf&#39; | egrep -o "[^/]*(\.conf)$"|tr &#39;a-z&#39; &#39;A-Z&#39; >/tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
RESOLV.CONF
CA-LEGACY.CONF
FASTESTMIRROR.CONF
LANGPACKS.CONF
SYSTEMD.CONF
VERSION-GROUPS.CONF
LVM.CONF
LVMLOCAL.CONF
ASOUND.CONF
LDAP.CONF
MLX4.CONF
RDMA.CONF
SMTPD.CONF
Salin selepas log masuk

  7.显示/var目录下一级子目录或文件的总数


[root@localhost ~]# ls /var | wc -l21
Salin selepas log masuk

  8.取出/etc/group第三个字段数值最小的10个组的名字


[root@localhost ~]# sort -t: -k3 -n /etc/group|head -10 |cut -d&#39;:&#39; -f1
root
bin
daemon
sys
adm
tty
disklpmem
kmem
Salin selepas log masuk

  9.将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中


[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 

#
# /etc/fstab
# Created by anaconda on Sat May 13 10:12:58 2017#
# Accessible filesystems, by reference, are maintained under &#39;/dev/disk&#39;# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/cl-root     /                       xfs     defaults        0 0UUID=2789d01a-4e2b-47a5-9c3c-537641648663 /boot                   xfs     defaults        0 0/dev/mapper/cl-swap     swap                    swap    defaults        0 0\S
Kernel \r on an \m
Salin selepas log masuk

  对于正则表达式的使用需要多联系加强记忆,否则是用不好正则表达式的,在学习过程中切记多写多背。

Atas ialah kandungan terperinci Linux中关于grep以及正则表达式的代码案例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tidak dapat log masuk ke mysql sebagai akar Tidak dapat log masuk ke mysql sebagai akar Apr 08, 2025 pm 04:54 PM

Sebab utama mengapa anda tidak boleh log masuk ke MySQL sebagai akar adalah masalah kebenaran, ralat fail konfigurasi, kata laluan tidak konsisten, masalah fail soket, atau pemintasan firewall. Penyelesaiannya termasuk: periksa sama ada parameter pengikat di dalam fail konfigurasi dikonfigurasi dengan betul. Semak sama ada kebenaran pengguna root telah diubahsuai atau dipadam dan ditetapkan semula. Sahkan bahawa kata laluan adalah tepat, termasuk kes dan aksara khas. Semak tetapan dan laluan kebenaran fail soket. Semak bahawa firewall menyekat sambungan ke pelayan MySQL.

C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal C Language Compilation Compilation: Panduan terperinci untuk pemula ke aplikasi praktikal Apr 04, 2025 am 10:48 AM

C Language Conditional Compilation adalah mekanisme untuk selektif menyusun blok kod berdasarkan keadaan kompilasi masa. Kaedah pengenalan termasuk: menggunakan arahan #if dan #Else untuk memilih blok kod berdasarkan syarat. Ekspresi bersyarat yang biasa digunakan termasuk STDC, _WIN32 dan LINUX. Kes praktikal: Cetak mesej yang berbeza mengikut sistem operasi. Gunakan jenis data yang berbeza mengikut bilangan digit sistem. Fail header yang berbeza disokong mengikut pengkompil. Penyusunan bersyarat meningkatkan kebolehgunaan dan fleksibiliti kod, menjadikannya boleh disesuaikan dengan pengkompil, sistem operasi, dan perubahan seni bina CPU.

【Rust Sendiri belajar】 Pengenalan 【Rust Sendiri belajar】 Pengenalan Apr 04, 2025 am 08:03 AM

1.0.1 Preface Projek ini (termasuk kod dan komen) telah direkodkan semasa karat saya yang diajar sendiri. Mungkin ada kenyataan yang tidak tepat atau tidak jelas, sila minta maaf. Jika anda mendapat manfaat daripadanya, ia lebih baik. 1.0.2 Mengapa Rustrust boleh dipercayai dan cekap? Karat boleh menggantikan C dan C, dengan prestasi yang sama tetapi keselamatan yang lebih tinggi, dan tidak memerlukan rekompilasi yang kerap untuk memeriksa kesilapan seperti C dan C. Kelebihan utama termasuk: Keselamatan Memori (mencegah penunjuk null dari dereferences, penunjuk menggantung, dan perbalahan data). Thread-safe (pastikan kod multi-threaded selamat sebelum pelaksanaan). Elakkan tingkah laku yang tidak ditentukan (mis., Arus dari batas, pembolehubah yang tidak diinisialisasi, atau akses kepada memori yang dibebaskan). Karat menyediakan ciri bahasa moden seperti generik

Apakah 5 komponen asas Linux? Apakah 5 komponen asas Linux? Apr 06, 2025 am 12:05 AM

Lima komponen asas Linux adalah: 1. Kernel, menguruskan sumber perkakasan; 2. Perpustakaan sistem, menyediakan fungsi dan perkhidmatan; 3. Shell, antara muka pengguna untuk berinteraksi dengan sistem; 4. Sistem fail, menyimpan dan menganjurkan data; 5. Aplikasi, menggunakan sumber sistem untuk melaksanakan fungsi.

Cara menyelesaikan MySQL tidak dapat dimulakan Cara menyelesaikan MySQL tidak dapat dimulakan Apr 08, 2025 pm 02:21 PM

Terdapat banyak sebab mengapa permulaan MySQL gagal, dan ia boleh didiagnosis dengan memeriksa log ralat. Penyebab umum termasuk konflik pelabuhan (periksa penghunian pelabuhan dan ubah suai konfigurasi), isu kebenaran (periksa keizinan pengguna yang menjalankan perkhidmatan), ralat fail konfigurasi (periksa tetapan parameter), rasuah direktori data (memulihkan data atau membina semula ruang meja), isu ruang jadual InnoDB (semak fail ibdata1) Apabila menyelesaikan masalah, anda harus menganalisisnya berdasarkan log ralat, cari punca utama masalah, dan mengembangkan tabiat sandaran data secara teratur untuk mencegah dan menyelesaikan masalah.

Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Di manakah perpustakaan fungsi bahasa C? Bagaimana untuk menambah perpustakaan fungsi bahasa C? Apr 03, 2025 pm 11:39 PM

Perpustakaan Fungsi Bahasa C adalah kotak alat yang mengandungi pelbagai fungsi, yang dianjurkan dalam fail perpustakaan yang berbeza. Menambah perpustakaan memerlukan menyatakannya melalui pilihan baris perintah pengkompil, contohnya, pengkompil GCC menggunakan pilihan -L diikuti dengan singkatan nama perpustakaan. Jika fail perpustakaan tidak berada di bawah laluan carian lalai, anda perlu menggunakan pilihan -L untuk menentukan laluan fail perpustakaan. Perpustakaan boleh dibahagikan kepada perpustakaan statik dan perpustakaan dinamik. Perpustakaan statik secara langsung dikaitkan dengan program pada masa kompilasi, manakala perpustakaan dinamik dimuatkan semasa runtime.

Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Penyelesaian kepada kesilapan yang dilaporkan oleh MySQL pada versi sistem tertentu Apr 08, 2025 am 11:54 AM

Penyelesaian kepada ralat pemasangan MySQL adalah: 1. Berhati -hati memeriksa persekitaran sistem untuk memastikan keperluan perpustakaan ketergantungan MySQL dipenuhi. Sistem operasi dan keperluan versi yang berbeza adalah berbeza; 2. Berhati -hati membaca mesej ralat dan mengambil langkah -langkah yang sepadan mengikut arahan (seperti fail perpustakaan yang hilang atau kebenaran yang tidak mencukupi), seperti memasang kebergantungan atau menggunakan arahan sudo; 3 Jika perlu, cuba pasang kod sumber dan periksa dengan teliti log kompilasi, tetapi ini memerlukan pengetahuan dan pengalaman Linux tertentu. Kunci untuk menyelesaikan masalah akhirnya adalah dengan teliti memeriksa persekitaran sistem dan maklumat ralat, dan merujuk kepada dokumen rasmi.

Bolehkah mysql berjalan di Android Bolehkah mysql berjalan di Android Apr 08, 2025 pm 05:03 PM

MySQL tidak boleh berjalan secara langsung di Android, tetapi ia boleh dilaksanakan secara tidak langsung dengan menggunakan kaedah berikut: menggunakan pangkalan data ringan SQLite, yang dibina di atas sistem Android, tidak memerlukan pelayan yang berasingan, dan mempunyai penggunaan sumber kecil, yang sangat sesuai untuk aplikasi peranti mudah alih. Sambungkan jauh ke pelayan MySQL dan sambungkan ke pangkalan data MySQL pada pelayan jauh melalui rangkaian untuk membaca dan menulis data, tetapi terdapat kelemahan seperti kebergantungan rangkaian yang kuat, isu keselamatan dan kos pelayan.

See all articles