Processamento de texto no shell três espadachins grep, sed, awk

comando grep

Formato 1.grep

   grep root passwad	          在passwd中过滤root
    
   grep ^root passwd	          过滤以root开头的信息
    
   grep root$ passwd	          过滤以root结尾的信息
    
   grep -i root passwd	          忽略大小写
    
   grep -E "\<root" passwd	      root字符之前不能有字符
    
   grep -E "root\>" passwd        root字符之后不能有字符
     
   grep -3 lebron passwd	      显示关键字与其前后三行
    
   grep -n lebron passwd 	      显示匹配行所在行号
    
   grep -A3 lebron passwd 	      显示匹配行以及下面3行
    
   grep -B3 lebron passwd	      显示匹配行以及上面3行
    
   grep -v	                      反向过滤

grep root passwd filtro root em passwd

grep -i root passwd filtro root em passwd (ignorar maiúsculas e minúsculas)
Insira a descrição da imagem aqui

grep -i ^ root passwd Linhas de filtro começando com root em passwd (ignorando maiúsculas e minúsculas)

grep -i root $ passwd linhas de filtro terminando com root em passwd (ignorar maiúsculas e minúsculas)

grep -iE “^ root | root $” passwd começa com root ou termina com root

grep -iE "^ root | root $" passwd -v remove o início ou fim do root
Insira a descrição da imagem aqui

grep -iE "<root" passwd sem caracteres antes do root

grep -iE "root>" passwd sem caracteres após o root

grep -iE "<root>" passwd root não pode ter caracteres antes e depois

Insira a descrição da imagem aqui

grep -2 ROOT passwd exibe a linha da palavra-chave e as duas linhas antes e depois dela

grep -B2 ROOT passwd exibe a linha da palavra-chave e as duas linhas antes dela

grep -A2 ROOT passwd exibe a linha onde a palavra-chave está localizada e as próximas duas linhas

grep -n ROOT passwd exibe a linha da palavra-chave e seu número de linha
Insira a descrição da imagem aqui

2. Regras de correspondência de número de caractere Grep

    w...s	        w开头,s结尾中间任意3个字符
     
    ....s	        s结尾前面任意4个字符
     
    "ws*"	        w、s出现任意次
     
    "ws?"	        w、s出现0-1次
     
    "ws+"	        w、s出现1-任意次
      
    "ws{5}"	        出现5次
     
    "ws{3,5}"	出现3-5次
     
    "ws{,5}"	出现0-5次
     
    "ws{0,5}"	出现0-5次
     
    "ws{2,}"	出现2-任意次
     
    "(ws){2}"	“ws”这个字符作为整体出现2次

grep -E "w ... s" westos

grep -E “… s” westos

grep -E "em ..." westos

Insira a descrição da imagem aqui

grep -E “ws *” westos

grep -E “ws?” Westos

grep -E “ws +” westos

Insira a descrição da imagem aqui

grep -E “ws {4}” westos

grep -E “ws {2,4}” westos

grep -E “ws {, 4}” westos

grep -E “ws {3,}” westos

Insira a descrição da imagem aqui

grep -E “(gb) {2}” westos gb aparece duas vezes como um todo

grep -E "(gb) {, 2}" westos gb aparece como um todo no máximo duas vezes

grep -E "w (gb) {1,2} s" westos entre w e s gb aparece como um todo no máximo duas vezes
Insira a descrição da imagem aqui

comando sed

    p	        打印(需加 -n)
    d	        删除
    a	        追加
    i	        插入
    c	        更改/替换
    w	        写入
    r	        整合文件
    's/xx/xx/g'	字符替换
  1. p imprimir

sed -n '3p' westos exibe a terceira linha de westos

sed -n '3,7p' westos exibe westos de 3 a 7 linhas

sed -n '3p; 7p' westos exibe o conteúdo da 3ª e 7ª linhas de westos

sed -n '$ p' westos exibe a última linha de westos

Insira a descrição da imagem aqui

sed -n '/ ^ daddy / p' passwd exibe linhas começando com daddy

sed -n '/ bash $ / p' passwd exibe as linhas que terminam em bash
Insira a descrição da imagem aqui

  1. d deletar

sed '1,2d' westos exclui as linhas 1 e 2 em westos e exibe

sed '1d; 4d' westos exclua as linhas 1 e 4 em westos e exiba

sed '/ ^ p / d' westos apaga a linha que começa com p em westos e mostra

sed '/ g $ / d' westos apaga a linha que termina com g em westos e mostra

sed '/ g $ /! d' westos exclui e exibe as linhas diferentes de g terminando em westos (a operação inversa da etapa anterior)

Insira a descrição da imagem aqui

  1. um apêndice

sed'aoligay 'westos anexa oligay após cada linha de westos

sed '$ aoligay' westos anexa oligay ao final de westos

sed '1aoligay' westos anexa oligay após a primeira linha de westos
Insira a descrição da imagem aqui

sed '/ gg / aoligay' westos / gg / significa acrescentar após esta linha

sed '/ pig / aoligay \ nbro' westos \ n é uma nova linha
Insira a descrição da imagem aqui

  1. eu insiro
i与a的不同在于,a在指定行后追加,i在指定行前插入

sed '3i hhhhhh' westos insira hhhhh antes da terceira linha de westos

sed '$ i hhhhhh' westos insira hhhhh antes do final de westos

sed '/ pig / i hhhhhh' westos insira hhhhh antes da linha / pig / em westos

sed '/ pig / i hhhhhh \ ngg' westos insira hhhhh gg antes da linha / pig / em westos
Insira a descrição da imagem aqui

  1. c mudar

sed '$ c dsb' passwd substitui a última linha por dsb

sed '/ bash $ / c dsb' passwd irá substituir a linha que termina em bash por dsb

sed '/ ^ lbj / c dsb' passwd irá substituir a linha que começa com lbj por dsb
Insira a descrição da imagem aqui

  1. w escrever

sed '/ hey / w arquivo' westos
Insira a descrição da imagem aqui

  1. integração r

sed '2r arquivo' westos mescla o conteúdo do arquivo na segunda linha de westos

sed '$ r arquivo' westos mescla o conteúdo do arquivo no final de westos
Insira a descrição da imagem aqui

  1. substituir

sed '1,3s / bash / dunk /' passwd Substituir bash nas linhas 1 e 3 em passwd por dunk

/ lbj / kobe / g do sed; s / bash / gkd / g 'passwd substitua todo o lbj em passwd por kobe; substitua todo bash por gkd

sed '/ westos /, / zxn / s / bash / hhh / g' passwd substitua o bash entre westos e zxn em passwd por hhh
Insira a descrição da imagem aqui

/// @ / g 'passwd do sed substitua all / in passwd por @

@ / @ do sed: @ g 'passwd tem o mesmo efeito que o comando anterior, exceto que o delimitador é alterado para @

Insira a descrição da imagem aqui

comando awk

    格式:
     
    awk  -F  分隔符  BEGIN{}{}END{}  filename
     
    NR	        行数
    NF	        每行的列数
    FILENAME	文件名称本身
    “westos”	字符串
    $1	        指定列数

awk -F: '{print NR}' passwd mostra todas as linhas do arquivo

awk -F: '{print NF}' passwd mostra o número de colunas em cada linha do arquivo

awk -F: '{print $ 1}' passwd exibe o conteúdo da primeira coluna do arquivo
Insira a descrição da imagem aqui

awk -F: '{print FILENAME}' passwd exibe o nome do arquivo (o arquivo original será exibido várias vezes se houver várias linhas)

awk -F: '{print “ohou”}' passwd exibe a string de entrada (o arquivo original tem algumas linhas e será exibido várias vezes)
Insira a descrição da imagem aqui

/bash$/	                  条件:以bash结尾
/条件1/ | | /条件2/	  条件1或条件2
/条件1/ && /条件2/	  条件1、2同时成立

awk -F: 'BEGIN {imprimir “nome”} / bash $ / {imprimir $ 1} END {imprimir “sobre”}' passwd

awk -F: 'BEGIN {imprimir “nome”} / bash / ∣ ∣ / nologin / || / nologin/ / n o l o g i n / {print $ 1} END {print “over”} 'passwd

awk -F: 'BEGIN {imprimir “nome”} / bash $ / || / ^ root / {imprimir $ 1} END {imprimir “sobre”}' senha

awk -F: '$ 1 ~ / root / {print $ 1}' passwd

awk -F: ' 7 / nologin 7 ~ / nologin7 / n o l o g i n  / {print $ 1} 'passwd
Insira a descrição da imagem aqui

Dever de casa

Exercício 1:

Liste todos os nomes de usuário que podem ser usados ​​no sistema
Insira a descrição da imagem aqui

Exercício 2:

Faça um script apache.sh, de modo que após executar este script, insira um número para modificar a porta httpd para inserir um número
Insira a descrição da imagem aqui

Exercício 3:

Conte o número de usuários que podem ser usados ​​por usuários no sistema e cujo diretório pessoal não está em / home
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_42958401/article/details/108255025
Recomendado
Clasificación