Comandos Sort, uniq, tr e expressões regulares de shell e exercícios relacionados

1. O comando sort (classificar o conteúdo dos arquivos)

1. Visão geral: Classifique o conteúdo dos arquivos em unidades de linhas ou de acordo com diferentes tipos de dados

2. Formato francês:

sort [选项] 参数
cat file | sort 选项

3. Opções comuns

  • -f: ignora maiúsculas, letras maiúsculas são classificadas primeiro por padrão
  • -b: Ignora os espaços na frente de cada linha
  • -n: classificar por número
  • -r: classificação reversa
  • -u: equivalente a uniq, o que significa que apenas uma linha dos mesmos dados é exibida
  • -t: Especifique o separador de campo e use a tecla [tab] para separar por padrão
  • -k: especifica o campo de classificação
  • -o <arquivo de saída>: despeja os resultados classificados no arquivo especificado

4. Exemplos
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

-u os mesmos dados exibem apenas uma linha
Insira a descrição da imagem aqui

A desduplicação é executada com base na classificação após a classificação.
Insira a descrição da imagem aqui

-t é geralmente usado com -k
Organize o conteúdo do arquivo / etc / passwd na ordem uid (terceiro campo)

sort -t ":" -k 3 /etc/passwd

Use com du
Insira a descrição da imagem aqui

-b Ignora espaços em cada linha
Insira a descrição da imagem aqui

Dois, comando uniq

== 1. Visão geral: usado para relatar ou ignorar linhas repetidas consecutivas em um arquivo, geralmente combinado com o comando sort ==
2. Formato da sintaxe:

uniq [选项] 参数
cat file | uniq 选项

3. Opções comuns:

  • -c: conta e exclui linhas repetitivas no arquivo
  • -d: exibe apenas linhas repetidas consecutivas
  • -u: exibe apenas as linhas que aparecem uma vez
    Insira a descrição da imagem aqui

Continue a usar o símbolo de tubo
Insira a descrição da imagem aqui

Três, comando tr

1. Visão geral: frequentemente usado para substituir, compactar e excluir caracteres da entrada padrão
Formato de sintaxe:

tr [选项] 参数

2. Opções comuns:

  • -c: caracteres reservados no conjunto de caracteres 1, outros caracteres (incluindo nova linha \ n) são substituídos pelo conjunto de caracteres 2
  • -d: exclui todos os caracteres pertencentes ao conjunto de caracteres 1
  • -s: comprime a sequência de caracteres repetitivos em uma sequência de caracteres e substitui o conjunto de caracteres 1 pelo conjunto de caracteres 2
  • -t: o conjunto de caracteres 2 substitui o conjunto de caracteres 1, o mesmo resultado sem opções

3. Parâmetros:
Conjunto de caracteres 1:
Especifique o conjunto de caracteres original a ser convertido ou excluído. Ao realizar uma operação de conversão, o parâmetro "Conjunto de caracteres 2" deve ser usado para especificar a operação de conversão e o parâmetro "Conjunto de caracteres 2" deve ser usado para especificar o conjunto de caracteres de destino da conversão. Mas ao executar a operação de exclusão, o parâmetro "conjunto de caracteres 2" não é necessário
Conjunto de caracteres 2:
Especifique o conjunto de caracteres alvo a ser convertido

4. Exemplos

echo abc | tr 'a-z' 'A-Z'
echo abc | tr 'ac'  'AZ'

Insira a descrição da imagem aqui

Uso de -c
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

-d excluir o conjunto de caracteres 1

echo 'hello world' | tr -d 'od'

-s compacta uma string em uma string ou compacta o conjunto de caracteres 1 em 1 e substitui um conjunto de caracteres pelo conjunto de caracteres 2.

echo "thissss is a text 1 innnnnnne." | tr -s 'sn'
echo "thissss is a text 1 innnnnnne." | tr -s 'sn' 'AB'

Insira a descrição da imagem aqui

删除空行
echo -e "aa\n\n\n\n\nbb" | tr -s "\n"
cat testfile4| tr -s "\n"

把路径变量中的冒号":",替换成换行符"\n"实现每行输出
echo $PATH | tr -s ":" "\n"

以冒号分割
echo -e "aa\n\n\n\n\nbb" | tr -s "\n" ":"

Exclua o caractere "^ M" no arquivo do Windows "De acordo com"

1.第一种方法
cat abc.txt | tr -s "\r" "\n" > new_file
cat abc.txt | tr -d "\r" > new_file

cat -v abc.txt

2.第二种方法
yum install -y dos2unix
dos2unix abc.txt

Ao encontrar um caractere de nova linha ("\ n") no Linux, a operação de retorno de carro + alimentação de linha será realizada. Em vez disso, o caractere de retorno de carro será exibido apenas como um caractere de controle ("^ M"), e a operação de retorno de carro não irá ocorrer. No Windows, somente retorno de carro + avanço de linha ("\ r \ n") pode ser usado para retorno de carro + avanço de linha. Se um caractere de controle estiver faltando ou a ordem não estiver correta, uma nova linha não pode ser iniciada corretamente.

Array sort
Se o algoritmo for mais complicado, usar sort e tr combinados com o símbolo de barra vertical será mais simples

arr=(3 5 6 2 1 7)
echo ${arr[@]} | tr " " "\n" | sort -n | tr "\n" " "     

Insira a descrição da imagem aqui

Quatro, comando de corte

1. Visão geral do corte
Exibir a parte especificada na linha, excluir o campo especificado no arquivo
2. Formato da sintaxe:

 cut 选项参数
 cat file | cut 选项 

2. Opções comuns

  • -f: Extraia especificando qual campo. O comando cut usa "tab" como separador de campo padrão
  • -d: "TAB" é o separador padrão, use esta opção para mudar para outros separadores
  • --Complemento: esta opção é usada para excluir o campo especificado
  • --Delimitador de saída: altera o delimitador do conteúdo de saída
cut -d ':'-f 1 /etc/passwd
grep '/bin/bash' /etc/passwd | cut -d ':' -f 1-4,6,7       #以,分隔的开始字段和结束字段指定字段的范围(显示1-4字段和第6第7字段)
grep '/bin/bash' /etc/passwd | cut -d ':' --complement -f 2      #排除第二个字段
cut -d ':' -f1,7 --output-delimiter=' ' /etc/passwd              #输出分隔符使用空格分隔

Cinco, expressões regulares

Geralmente é usado em sentenças de julgamento para verificar se uma string satisfaz um determinado formato.
As expressões regulares são compostas de caracteres comuns e metacaracteres.
Os caracteres comuns incluem letras maiúsculas e minúsculas, números, sinais de pontuação e alguns outros símbolos
. Metacaracteres se referem a caracteres especiais com significado especial em expressões regulares, que pode ser usado para especificar o modo de aparência de seu caractere principal (ou seja, o caractere antes do metacaractere) no objeto de destino

1. Metacaracteres comuns de expressões regulares básicas (ferramentas suportadas: grep, egrep, sed, awk)

\ :转义字符,用于取消特殊符号的含义,例: \!、\n、\$等

^ :匹配字符串开始的位置,例: ^a、 ^the、 ^#、^[a-z]

$ :匹配字符串结束的位置,例: word$、 ^$匹配空行

. :匹配除\n之外的任意的一个字符,例: go.d、 g..d

* :匹配前面子表达式0次或者多次,例: goo*d、 go.*d

[list] :匹配list列表中的一个字符,例: go[ola]d, [abc][a-z][a-z0-9][0-9]匹配任意一位数字

[^list] :匹配任意非list列表中的一个字符,例: [^0-9][^A-20-9][^a-z]匹配任意一位非小写字母

\{
    
    n\} :匹配前面的子表达式n次,例: go\{
    
    2\}d、 '[0-9]\{2\} '匹配两位数字

\{
    
    n,\} :匹配前而的子表达式不少于n次,例: go\{
    
    2, \}d、'[0-9]\{2, \}'匹配两位及两位以上数字

\{
    
    n,m\} :匹配前面的子表达式n到m次,例: go\{
    
    2,3\}d、 ' [0-9]\{2,3\}'匹配两位到三位数字

注: egrep、 awk使用{
    
    n}{
    
    n,小、{
    
    n, m}匹配时“{
    
    }”前不用加“\” 

2. Metacaracteres de expressão regular estendida (ferramentas compatíveis: egrep, awk)

+ :匹配前面子表达式1次以上,例: go+d, 将匹配至少一个o, 如god、 good、 goood等

? :匹配前面子表达式0次或者1次,例: go?d, 将匹配gd或god

() :将括号中的字符串作为一个整体,例1: g(oo)+d," 将匹配oo整体1次以上,如good、gooood等

| :以或的方式匹配字条串,例: g (oo|la)d," 将匹配good或者glad

3. Exemplo de correspondência de endereço de e-mail

O nome de usuário requer o início de uma letra e até 2 símbolos podem ser usados ​​no meio, e o final do símbolo não pode ser usado. O comprimento do nome de usuário é de pelo menos 6 caracteres
@ sohu.com
@qq. com
@ 163.com
@ wo.cn
@ sina.com.cn
nome de usuário @ 子 domínio.domínio de
nível superior O comprimento da string de domínio de nível superior é geralmente de 2 a 5

egrep ^[a-zA-Z0-9]{
    
    1,}[a-zA-Z0-9\.\-]{
    
    4,}[a-zA-Z0-9]@[a-zA-Z0-9_\.\-]+\.([a-zA-Z]{
    
    2,5})$

4. Tela de números de telefone

Insira a descrição da imagem aqui

egrep ^[1][3|5][0-9][ ]?[0-9]{
    
    4}[ ]?[0-9]{
    
    4}$   number.txt

Acho que você gosta

Origin blog.csdn.net/weixin_53567573/article/details/114803228
Recomendado
Clasificación