Команды Linux, которые должны освоить Java-разработчики (3)

Java

будь позитивным человеком Пишите, исправляйте ошибки, улучшайте себя У меня рай, ориентированный на программирование, и цветут весенние цветы!

Обучение должно быть веселым. В этом раю я стараюсь изо всех сил объяснять знания или технологии простыми и понятными (забавными и интересными) выражениями, чтобы процесс обучения был полон веселья. Это первоначальная цель написания Сообщения в блоге.

Ранее я написал два введения в команды Linux. 1,Команды Linux, которые должны освоить Java-разработчики (1)2,Команды Linux, которые должны освоить Java-разработчики (2)Некоторое время назад я смотрел несколько фильмов о Гарри Поттере и вдруг подумал, что команды Linux волшебные, совсем как магия в фильмах о Гарри Поттере. Затем изучите эти команды Linux, и мы сможем творить чудеса, как Гарри Поттер и др. Волшебный мир довольно интересен и полон радости. В этой статье речь пойдет о трех командах Linux.Эти три команды являются тремя мушкетерами Linux (grep, sed, awk), а также тремя более важными командами в Linux.Изучив эти три команды, мы также используем три более мощные магические .

начало повествования:

Есть волшебная школа с тремя магами в ней. Эти три магии всегда считались тремя самыми важными магиями в магических школах, также известными как Три мушкетера. Давайте начнем изучение этих трех магий!

Волшебная карта:

在这里插入图片描述

1. Текстовый фильтр - grep

grep命令Используется для поиска квалифицированных строк в файлах, это мощный инструмент текстового поиска, который поддерживаетУсловия фильтрации, написанные регулярными выражениями или символами и основными текстовыми символами.

команда grep используется дляНаходит файлы, содержимое которых содержит указанный стиль шаблона, если содержимое файла соответствует указанному стилю шаблона, команда grep по умолчанию отобразит столбец, содержащий стиль шаблона. Проще говоря: пользователь может указать «шаблон» (опцию), чтобы выполнить проверку соответствия целевому тексту и распечатать соответствующую строку при просмотре.

Примечание. При вводе строкового параметра в команду grep лучше всего заключать его в двойные кавычки. Вы также можете использовать двойные кавычки при вызове переменных. При вызове сопоставления с образцом следует использовать одинарные кавычки.

  • Общий формат команды
# grep  匹配条件 目标文件/目录
可选参数:
-c 或 --count : 计算符合样式的列数。
-i 或 --ignore-case : 忽略字符大小写的差别
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号
-s :不显示不存在或无匹配文本的错误信息。
-v 或 --revert-match : 显示不包含匹配文本的所有行行
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同
-E 或 --extended-regexp : 将样式为延伸的普通表示法来使用
....

说明:在正则表达式中
^ :匹配字符串开始
$ :匹配字符串结尾
* :字符出现 [0- 任意次 ]
\?:字符出现 [0-1 次 ]
\+:字符出现 [1- 任意次 ]
  • Простой пример
# 1、新建一个busyday busyday1 busyday2文件 
[root@localhost learn_grep]# touch busyday
[root@localhost learn_grep]# vim busyday 
# 其他busyday1 busyday2类似,文件内容略
[root@localhost learn_grep]# cat busyday 
abc
123abdef
789happy
hjk567
hello123
greptest

# 2、查询 happy 所在的文件
[root@localhost learn_grep]# grep "happy" busyday*
busyday:789happy
busyday1:123happy
busyday2:456happy

# 3、统计 happy 所在的文件内容的出现的次数
[root@localhost learn_grep]# grep -c "happy" busyday*
busyday:1
busyday1:1
busyday2:1

# 4、显示匹配happy的所有行数,都在第三行
[root@localhost learn_grep]# grep -n "happy" busyday*
busyday:3:789happy
busyday1:3:123happy
busyday2:3:456happy

# 5、显示所有不包含happy的行
[root@localhost learn_grep]# grep -v "happy" busyday*
busyday:abc
busyday:123abdef
busyday:hjk567
busyday:hello123
busyday:greptest
busyday:
busyday1:abc
busyday1:4567abdef
busyday1:hjk321
busyday1:hello987
busyday2:abc
busyday2:9876abdef
busyday2:hjk4321
busyday2:hello0980

# 6、精确匹配,找到 123happy 
[root@localhost learn_grep]# grep "123happy" busyday*
busyday1:123happy

# 7、正则匹配,找到所有123开头的
[root@localhost learn_grep]# grep -E "^123*" busyday*
busyday:123abdef
busyday1:123happy

И многое другое, практикуйте магию самостоятельно!

2. Обработчик персонажей

sed命令Является ли использование скрипта для обработки текстовых файлов. sed может обрабатывать и редактировать текстовые файлы в соответствии с инструкциями скрипта. Его можно прекрасно использовать с регулярными выражениями, и его функции могут быть экстраординарными.

  • базовая грамматика
sed  [-参数]  '命令'  文本

参数说明:
- -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
- -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -h或--help 显示帮助。
- -n或--quiet或--silent 仅显示script处理后的结果。
- -V或--version 显示版本信息。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦
  • пример
# 一、sed 's/要被取代的字串/新的字串/g'
# 1、把aflyun用"java编程技术乐园"替换
[root@localhost learn_awk]# echo "aflyun0315" | sed 's/aflyun/java编程技术乐园/' 
java编程技术乐园0315
[root@localhost learn_awk]# echo "aflyun0315" | sed 's*aflyun*java编程技术乐园*'
java编程技术乐园0315
# 二、指定输入流的哪一行被编辑,如果省略,默认是对所有行都进行编辑
# 2、把aflyun用"java编程技术乐园"替换
[root@localhost learn_awk]# cat aflyun 
flyun110
Hello aflyun
aflyun0315
#  替换第2行
[root@localhost learn_awk]# cat aflyun | sed '2s/aflyun/java编程技术乐园/'
aflyun110
Hello java编程技术乐园
aflyun0315
#替换所有行(没有地址,就是默认)
[root@localhost learn_awk]# cat aflyun | sed 's/aflyun/java编程技术乐园/'
java编程技术乐园110
Hello java编程技术乐园
java编程技术乐园0315

# 三、基本编辑命令
[root@localhost learn_awk]# cat aflyun 
aflyun110
Hello aflyun
aflyun0315
# 1、插入命令
[root@localhost learn_awk]# sed '2i java编程技术乐园' aflyun 
aflyun110
java编程技术乐园
Hello aflyun
aflyun0315

# 2、删除命令
[root@localhost learn_awk]# sed '2d' aflyun 
aflyun110
aflyun0315

# 其他类似

# 四、替换文件内容
# sed -i 's/aflyun/java编程技术乐园/g' 文件名    
# 如果没有g标记,则只有每行第一个匹配的aflyun被替换成java编程技术乐园
[root@localhost learn_awk]# cat aflyun 
aflyun110
Hello aflyun
aflyun0315
[root@localhost learn_awk]# sed -i 's/aflyun/java编程技术乐园/g' aflyun 
[root@localhost learn_awk]# cat aflyun 
java编程技术乐园110
Hello java编程技术乐园
java编程技术乐园0315

3. Генератор отчетов - awk

AWKЯвляется языком обработки текстовых файлов и мощным инструментом анализа текста.

Причина, по которой он называется AWK, заключается в том, что он берет первый символ Фамилии трех основателей Альфреда Ахо, Питера Вайнбергера и Брайана Кернигана. Он также известен как старший из Трех мушкетеров, а меч обнажен и будет необыкновенным. Освоенный awk сделает вашу работу выше.

Механизм обработки Awk: awk будет обрабатывать текст построчно, поддерживать выполнение некоторой подготовительной работы перед обработкой первой строки и выполнять некоторую итоговую работу после обработки последней строки, что отражается в формате команды следующим образом:

BEGIN{}: выполняется перед чтением первой строки текста, обычно используется для инициализации операций.

{}: обработка построчно, чтение текста построчно и выполнение соответствующей обработки — наиболее распространенный блок команд редактирования.

END{}: выполняется после обработки последней строки текста, обычно используется для вывода результата обработки.

Общие встроенные переменные awk

имя переменной иллюстрировать
$0 текущая запись
1~n Текущие записи N-TH
FS разделитель полей ввода, по умолчанию новая строка
NF Количество полей в текущей записи — это количество столбцов.
NR Количество прочитанных записей, то есть номер строки, начиная с 1
OFS Разделитель полей ввода, по умолчанию тоже пробел
ORS Разделитель выходных записей, по умолчанию новая строка
  • Основное использование 1
awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

  • пример
# 新增一个 happy.log ,内容
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
# 每行按空格或TAB分割,输出文本中的2、4项
[root@localhost learn_awk]#  awk '{print $1,$4}' happy.log 
2 a
3 like
This's 
10 orange,apple,mongo
 # 格式化输出
[root@localhost learn_awk]# awk '{printf "%-8s %-10s\n",$1,$4}' happy.log 
2        a         
3        like      
This's             
10       orange,apple,mongo
  • Основное использование 2
awk -F  #-F相当于内置变量FS, 指定分割字符
  • пример
[root@localhost learn_awk]# cat happy.log 
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
# 使用","分割
[root@localhost learn_awk]# awk -F, '{print $1,$2}'   happy.log 
2 this is a test 
3 Are you like awk 
This's a test 
10 There are orange apple # 注意这里逗号没有了

# 或者使用内建变量
[root@localhost learn_awk]# awk 'BEGIN{FS=","} {print $1,$2}'   happy.log 
2 this is a test 
3 Are you like awk 
This's a test 
10 There are orange apple # 注意这里逗号没有了

# 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
[root@localhost learn_awk]# awk -F '[ ,]'  '{print $1,$2,$5}'   happy.log 
2 this test
3 Are awk
This's a 
10 There apple

# $1,$2,$5 输出第一个,第二个和第五个,没有则不输出。例如This's a test ,没$5.

Awk очень мощный и имеет много функций, я могу только кратко представить его здесь, это волшебное обучение не может быть изучено за день или два.

Эпилог: Сегодняшние три ордена - это три волшебства. И те из нас, кто изучает команды, подобны тем ученикам, которые изучают магию в фильмах о Гарри Поттере.У некоторых людей способность к пониманию выше, поэтому, если он хочет изучить магию, ему просто нужно немного Она может быть относительно низкой, и ему нужно продолжать практиковаться в школе, прежде чем он сможет овладеть этой магией. Но независимо от уровня понимания,Пока вы продолжаете практиковаться, даже если вы не можете практиковать самую мощную магию, в конце концов это не будет так уж плохо. Изучение команд Linux — то же самое, относитесь к командам Linux как к волшебству!

Рекомендуемое чтение

Команды Linux, которые должны освоить Java-разработчики (1)
Команды Linux, которые должны освоить Java-разработчики (2)
Команды Linux, которые должны освоить Java-разработчики (3)
Два волшебных инструмента Linux, которыми должны овладеть Java-разработчики (4)
Команды Linux, которые должны освоить Java-разработчики — применяйте полученные знания (5)


Спасибо за чтение, если вы найдете этот пост в блоге полезным, пожалуйста, поставьте лайк, чтобы его увидело больше людей! Желаю тебе счастливого дня!


Технологический рай Java-программирования: Публичный аккаунт для обмена знаниями в области программирования. Учитесь у старейшин сада и водителей и каждый день добивайтесь небольших успехов.

Сканируйте внимание, фоновый ответ【ресурс】, получите заветную галантерею!99.9%друзьям это нравится

image.png | center| 747x519

© Фейюнь, который с каждым днем ​​становится все лучше