🐧 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр Π½Π° Linux

by itisgood

Π’ Linux сущСствуСт мноТСство способов прСобразования строки Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр.

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ для измСнСния рСгистра ΡΠ²Π»ΡΡŽΡ‚ΡΡ tr, sed ΠΈ awk.

Tr – самая простая ΠΊΠΎΠΌΠ°Π½Π΄Π° для этой Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ Bash 4 Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ рСгистр строки.

Π’ этом руководствС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр Π² систСмах Linux.

ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ TR для прСобразования рСгистра

Команда tr ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΈ удалСния символов.

Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку ΠΈΠ»ΠΈ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр.

Она ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² скриптах bash.

[:upper:] ΠΈΠ»ΠΈ [A-Z] – ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр

[:lower:] ΠΈΠ»ΠΈ [a-z] – ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ строку ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра Π² Π½ΠΈΠΆΠ½ΠΈΠΉ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

tr [:upper:] [:lower:]

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ строку ΠΈΠ· Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

tr a-z A-Z

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ Π² строкС ”welcome” Π² Π·Π°Π³Π»Π°Π²Π½ΡƒΡŽ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅:

$ echo welcome | tr [:lower:] [:upper:]

НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ tr Π² скриптах bash для прСобразования строки Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр

!/bin/bash
 y="WELCOME"
 val=$(echo $y | tr '[:upper:]' '[:lower:]')
 string="$val linux"
 echo $string

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС тСкстового Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ file.txt ΠΈΠ· Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

$ tr a-z A-Z < ./file.txt

И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅

$ tr A-Z a-z < ./myfile.txt

ИспользованиС SED для прСобразования рСгистра

Команда Sed ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Linux для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈ прСобразования тСкста.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sed ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ рСгистр строки.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ sed, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅

echo  "hello world"  | sed 's/[a-z]/\U&/g'

a-z] – это рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ строчным Π±ΡƒΠΊΠ²Π°ΠΌ. \U& ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°ΠΌΠ΅Π½Ρ‹ строчных Π±ΡƒΠΊΠ² Π½Π° Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π½Π° строчныС Π±ΡƒΠΊΠ²Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

echo "HELLO WORLD " | sed 's/[A-Z]/\L&/g'

[A-Z] – это рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌ Π±ΡƒΠΊΠ²Π°ΠΌ. \L& ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°ΠΌΠ΅Π½Ρ‹ прописных Π±ΡƒΠΊΠ² Π½Π° строчныС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки sed, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаблон:

$ sed 's/[a-z]/\U&/g' < ./myfile.txt

МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ‘s/.*/\L&/g’ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ самого.

ИспользованиС AWK для прСобразования рСгистра

Команда awk ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tolower ΠΈ toupper для прСобразования рСгистра строки.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строку Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр, Π²Π²Π΅Π΄ΠΈΡ‚Π΅

string="hello world"
echo "$string" | awk '{print toupper($0)}'

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ всС содСрТимоС тСкстового Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ file.txt Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

$ awk '{ print toupper($0) }' ./file.txt

Аналогично для прСобразования Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

$ awk '{print tolower($0)}' ./file.txt

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символов Π² Bash

Начиная с вСрсии 4 Bash, появилась новая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСобразования рСгистра строки.

  1. Β ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ любой строки Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ^
  2. Β ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всю строку Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ^^
  3. Β ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки Π² строчный рСгистр ,
  4. Β ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всю строку Π² строчный рСгистр. ,,

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Bash для прСобразования рСгистра строк

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа ^:

$ note='welcome'
$ echo $note
$ echo ${note^}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ всСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ bash Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа ^^:

$ note='welcome'
$ echo $note
$ echo ${note^^}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3:

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа ,,:

$ note='WELCOME'
$ echo ${note,,}

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² прописныС ΠΈΠ»ΠΈ строчныС Π±ΡƒΠΊΠ²Ρ‹ Π² Linux.

Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ вопросы, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΠΈΡ… для вас.

 

Loading

You may also like

Leave a Comment