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)
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
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
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
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
grep -E “ws *” westos
grep -E “ws?” Westos
grep -E “ws +” westos
grep -E “ws {4}” westos
grep -E “ws {2,4}” westos
grep -E “ws {, 4}” westos
grep -E “ws {3,}” westos
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
comando sed
p 打印(需加 -n)
d 删除
a 追加
i 插入
c 更改/替换
w 写入
r 整合文件
's/xx/xx/g' 字符替换
- 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
sed -n '/ ^ daddy / p' passwd exibe linhas começando com daddy
sed -n '/ bash $ / p' passwd exibe as linhas que terminam em bash
- 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)
- 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
sed '/ gg / aoligay' westos / gg / significa acrescentar após esta linha
sed '/ pig / aoligay \ nbro' westos \ n é uma nova linha
- 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
- 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
- w escrever
sed '/ hey / w arquivo' westos
- 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
- 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
/// @ / 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 @
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
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)
/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
Dever de casa
Exercício 1:
Liste todos os nomes de usuário que podem ser usados no sistema
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
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