Учебные заметки по Linux для базовых навыков инженеров-разработчиков больших данных (3)

искусственный интеллект Большие данные
Учебные заметки по Linux для базовых навыков инженеров-разработчиков больших данных (3)

Команды, связанные с трубой

Цель

  • cut
  • sort
  • wc
  • uniq
  • tee
  • tr
  • split
  • awk
  • sed
  • grep
  • Готов к работе

    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maq 88 22 66
    zhouba 98 44 46
    
  • Выше приведена информация таблицы очков.

  • Используйте запятые для разделения, первый столбец — это имя, второй столбец — балл по языку, третий столбец — балл по математике, а четвертый столбец — балл по английскому языку.

Готов к работе

vim 1.txt

111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii

1 cut

1.1 Цели

  • cutУсловно из результатов командыизвлекатьСоответствующий контент

1.2 Реализация

Шаг 1: Вырежьте 5-й символ первых 2 строк в файле 1.txt.

Заказ значение
вырезать файл действия Извлечь содержимое из указанного файла
  • параметр
параметр английский значение
-c characters Выбрать контент по символу
head -2 1.txt | cut -c 5

Шаг 2: Вырежьте первый и второй абзацы первых двух строк в файле 1.txt, разделенные знаком «:».

параметр английский значение
-d '分隔符' delimiter Укажите разделитель
-f n1,n2 fields Чтобы отобразить содержимое абзаца после разделения, используйте,сегментация

контроль диапазона

Сфера значение
n Показать только n-й элемент
n- Отображение от n-го элемента до конца строки
n-m Отображение от элемента n до элемента m (включая m)
head -2 1.txt | cut -d ':' -f 1,2
head -2 1.txt | cut -d ':' -f 1-2

1.3 Резюме

  • пройти черезcut 动作 目标文件Соответствующий контент может быть извлечен в соответствии с условиями
  • Готов к работе

    vim score.txt

    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maq 88 22 66
    zhouba 98 44 46
    

2 sort

2.1 Цели

  • sort может сортировать содержимое текстового файла по строкам.

2.2 Путь

  • Шаг 1. Отсортируйте строки
  • Шаг 2. Изменение порядка
  • Шаг 3: Сортировка значений
  • Шаг 4. Рассортируйте оценки

2.3 Реализация

Шаг 1. Отсортируйте строки

[root@node01 tmp]# cat 2.txt
banana
apple
pear
orange
pear

[root@node01 tmp]# sort 2.txt 
apple
banana
orange
pear
pear

Шаг 2. Изменение порядка

параметр английский значение
-u unique удалить дубликаты

Его роль очень проста, заключается в удалении повторяющихся строк в строке вывода.

[root@node01 tmp]# sort -u 2.txt 
apple
banana
orange
pear

Шаг 3: Сортировка значений

параметр английский значение
-n numeric-sort Сортировать по числовому значению
-r reverse изменить порядок
  • Подготовить данные

    [root@node01 tmp]# cat 3.txt 
    1
    3
    5
    7
    11
    2
    4
    6
    10
    8
    9
    
  • По умолчанию字符串Сортировать

    [root@node01 tmp]# sort 2.txt 
    1
    10
    11
    2
    3
    4
    5
    6
    7
    8
    9
    
  • по возрастанию

    [root@node01 tmp]# sort -n 2.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
  • обратный порядок

    [root@node01 tmp]# sort -n -r 2.txt
    11
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    
  • Комбинированный

    [root@node01 tmp]# sort -nr 2.txt  
    11
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

Шаг 4. Рассортируйте оценки

параметр английский значение
-t field-separator Укажите разделитель полей
-k key Сортировать по этому столбцу

''

# 根据第二段成绩 进行倒序显示 所有内容
sort -t ',' -k2nr score.txt 

3 команда туалета

3.1 Цели

  • отображаемое обозначениедокумент байты, слова, строкиИнформация.

3.2 Путь

  • Шаг 1: Отображение обозначениядокумент байты, слова, строкиИнформация.
  • Шаг 2: отображать только количество строк в файле
  • Шаг 3. Подсчитайте количество строк, слов и байтов в нескольких файлах.
  • Шаг 4: Просмотр/etcСколько подконтента в каталоге

3.3 Реализация

Шаг 1: Отображение обозначениядокумент байты, слова, строкиИнформация.

Заказ значение
wc имя файла отображаемое обозначениедокумент байты, слова, строкиИнформация
[root@hadoop01 export]# cat 4.txt
111
222 bbb
333 aaa bbb 
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee

[root@hadoop01 export]# wc 4.txt 
 6 21 85 4.txt

Шаг 2: отображать только количество строк в файле

параметр английский значение
-c bytes количество байтов
-w words количество слов
-l lines Ряды
[root@hadoop01 export]# wc 4.txt 
 6 21 85 3.txt

Шаг 3. Подсчитайте количество строк, слов и байтов в нескольких файлах.

[root@hadoop01 export]# wc 1.txt 2.txt 3.txt 
  4   4  52 1.txt
 11  11  24 2.txt
  6  21  85 3.txt
 21  36 161 总用量
 
[root@hadoop01 export]# wc *.txt
  4   4  52 1.txt
 11  11  24 2.txt
  6  21  85 3.txt
  6   6  95 score.txt
 27  42 256 总用量

Шаг 4: Просмотр/etcСколько подконтента в каталоге

[root@hadoop01 export]# ls /etc | wc -w
240

3.4 Резюме

  • пройти черезwc 文件можетстатистикадокументбайты, слова, строки.

4 uniq

Команда uniq используется для проверки и удаления повторяющихся строк в текстовом файле и обычно используется в сочетании с командой sort.

4.1 Цели

  • Команда uniq используется для проверки и удаления повторяющихся строк в текстовом файле и обычно используется в сочетании с командой sort.

4.2 Путь

  • Первый шаг: добиться эффекта дедупликации
  • Шаг 2: не только удалите дубликаты, но и подсчитайте количество вхождений

4.3 Реализация

Первый шаг: добиться эффекта дедупликации

Заказ английский значение
uniq [参数] 文件 уникальный удалить повторяющиеся строки
# 准备内容
[root@hadoop01 export]# cat 5.txt 
张三    98
李四    100
王五    90
赵六    95
麻七    70
李四    100
王五    90
赵六    95
麻七    70

# 排序
[root@hadoop01 export]# cat 5.txt | sort
李四    100
李四    100
麻七    70
麻七    70
王五    90
王五    90
张三    98
赵六    95
赵六    95

# 去重
[root@hadoop01 export]# cat 5.txt | sort | uniq
李四    100
麻七    70
王五    90
张三    98
赵六    95

Шаг 2: не только удалите дубликаты, но и подсчитайте количество вхождений

параметр английский значение
-c count Подсчитайте количество вхождений каждой строки контента
[root@hadoop01 export]# cat 5.txt | sort | uniq -c
      2 李四    100
      2 麻七    70
      2 王五    90
      1 张三    98
      2 赵六    95

4.4 Резюме

  • пройти черезuniq [选项] 文件Вы можете завершить повторный запуск и подсчитать количество раз

5 tee

5.1 Цели

  • пройти черезteeрезультат командычерез трубывывод внесколько файловсередина

5.2 Реализация

Заказ значение
Результат команды | тройник файл1 файл2 файл3 пройти черезteeрезультат командычерез трубывывод внесколько файловсередина
  • Поместить результаты статистики дедупликации в файлы a.txt, b.txt, c.txt

    cat 5.txt | sort | uniq -c | tee a.txt b.txt c.txt
    

5.3 Резюме

  • пройти черезteeрезультат командычерез трубывывод внесколько файловсередина

6 tr

6.1 Цели

  • пройти черезtrкоманда длязаменятьилиУдалитьсимволов в файле.

6.2 Путь

  • Шаг 1: РеализуйтезаменятьЭффект
  • Шаг 2: РеализацияУдалитьЭффект
  • Шаг 3: Готовоколичество словкейс

6.3 Реализация

Шаг 1. Реализуйте эффект замены

Заказ английский значение
результат команды | tr замененный символ новый символ translate Для достижения эффекта замены
# 将 小写i 替换成  大写 I
# 把itheima的转换为大写
# 把 HELLO 转成 小写
# 将 小写i 替换成  大写 I
echo "itheima" | tr 'i' 'I'

# 把itheima的转换为大写
echo "itheima" |tr '[a-z]' '[A-Z]'

# 把 HELLO 转成 小写
echo "HELLO" |tr '[A-Z]' '[a-z]'

Шаг 2: Реализуйте эффект удаления

Заказ английский значение
Результат команды | tr -d удаляемые символы delete удалить указанный символ
  • Требование: удалить числа в abc1d4e5f
echo 'abc1d4e5f' | tr -d '[0-9]'

Шаг 3: Подсчет слов

Готов к работе
[root@hadoop01 export]# cat words.txt 
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop

1 Замените на новую строку

2 Сортировать

3 Дедупликация

4 счета

# 统计每个单词出现的次数
[root@hadoop01 export]# cat words.txt | tr ',' '\n' | sort | uniq -c
      1 flume
      2 hadoop
      2 hello
      1 hive
      1 jerry
      1 kitty
      1 sqoop
      1 tom
      2 world
  • Готов к работе

    # 查看 /etc目录下 以.conf以结尾的文件的内容
    cat -n /etc/*.conf
    
    # 将命令结果 追加到 /export/v.txt 文件中
    cat -n /etc/*.conf >> /export/v.txt
    

7 split

7.1 Цели

  • пройти черезsplitкоманда будетбольшой файл Нарезатьнемногомаленький файл

7.2 Путь

  • Шаг 1: НажмитебайтРазделить большой файл на несколько файлов меньшего размера
  • Шаг 2: НажмитеРядыРазделить большой файл на несколько файлов меньшего размера

7.3 Реализация

Шаг 1: НажмитебайтРазделить большой файл на несколько файлов меньшего размера

Заказ английский значение
split -b 10к файлов byte Разделить большой файл на несколько10KBмаленький файл

Шаг 2: НажмитеРядыРазделить большой файл на несколько файлов меньшего размера

Заказ английский значение
разделить -l 1000 файлов lines Разделить большой файл на несколько1000 строкмаленький файл

7.4 Резюме

  • пройти черезsplit 选项 文件名команда будетбольшой файл Нарезатьнемногомаленький файл

  • Подготовка 1:

    vim score.txt

    zhangsan 68 99 26
    lisi 98 66 96
    wangwu 38 33 86
    zhaoliu 78 44 36
    maq 88 22 66
    zhouba 98 44 46
    

8 awk

8.1 Цели

  • пройти черезawkвыполнитьнечеткий запрос, Извлечение полей по запросу, также можносудитьи простооперацияЖдать.

8.2 Шаги

  • Шаг 1: Нечеткий запрос

  • Шаг 2: Укажите разделитель и отобразите содержимое в соответствии с индексом

  • Шаг 3: Укажите разделитель для поля вывода

  • Шаг 4: вызовите функцию, предоставляемую awk

  • Шаг 5: Определите, проходит ли $4 оператор if

  • Шаг 6: Суммирование содержания абзаца

8.3 Реализация

Шаг 1: Найдите результаты zhangsan и lisi

Заказ значение
awk '/zhangsan|lisi/' score.txt нечеткий запрос

Шаг 2: Укажите разделитель и отобразите содержимое в соответствии с индексом

Заказ значение
awk -F ',' '{print 1,1, 2, $3}' 1.txt Работайте с файлом 1.txt, разделите его запятой, напечатайте первый абзац, второй абзац и третий абзац.

опции

опции английский значение
-F ',' field-separator использоватьуказанный персонажсегментация
$ + 数字 Получатьабзацысодержание
$0 Получатьтекущая строкасодержание
NF field Указывает, сколько полей в текущей строке
$NF представляет последнее поле
$(NF-1) представляет предпоследнее поле
NR Представляет, какая строка обрабатывается

Шаг 3: Укажите разделитель и отобразите содержимое в соответствии с индексом

Заказ значение
awk -F ' ' '{OFS="==="}{print 1,1, 2, $3}' 1.txt Работайте с файлом 1.txt, разделите его запятой, напечатайте первый абзац, второй абзац и третий абзац.

опции

опции английский значение
OFS="字符" output field separator Разделить строку сегмента при выводе наружу

Шаг 4: вызовите функцию, предоставляемую awk

Заказ значение
awk -F ',' '{print toupper($2)}' 1.txt Работайте с файлом 1.txt, разделите его запятой, напечатайте первый абзац, второй абзац и третий абзац.

Общие функции следующие:

Имя функции значение эффект
toupper() upper Преобразование символов в верхний регистр
tolower() lower символ в нижний регистр
length() length вернуть длину символа

Шаг 5: Оператор if запрашивает информацию о квалифицированных студентах.

Заказ значение
awk -F ',' '{if(4>60)print4>60) print 1, $4 }' score.txt Если прошло, отобразить1,1, 4
awk -F ',' '{if(4>60)print4>60) print 1, 4,"Проходят";elseprint4, "Пройти", иначе напечатать1, $4, "Не удалось"}' score.txt Отображаемое имя, $4, успешно или неудачно

опции

параметр значение
if(0 "aa")print0 ~ "aa") print 0 Если строка содержит «аа», выведите строку
if(1 "aa")print1 ~ "aa") print 0 Если **первый абзац** содержит «аа», выведите эту строку.
if(1=="lisi")print1 == "lisi") print 0 еслиПервый абзац равен"lisi", просто напечатайте эту строку

Шаг 6: Содержание абзаца Найдите средний балл по предмету

Заказ значение
awk 'BEGIN{начальная операция}{выполнить каждую строку} END{конец операции}' имя файла BEGIN{ это оператор перед выполнением }
{Это оператор, который будет выполняться при обработке каждой строки}
END {Это оператор, который будет выполнен после обработки всех строк}
awk -F ',' 'BEGIN{}{total=total+$4}END{print total, NR, (total/NR)}' score.txt
  • Готов к работе

    vim 1.txt

    aaa java root
    bbb hello
    ccc rt
    ddd root nologin
    eee rtt
    fff ROOT nologin
    ggg rttt
    

9 sed

9.1 Цели

  • Может быть достигнуто с помощью sedфильтризаменятьфункция.

9.2 Путь

  • Шаг 1: Реализуйте функцию запроса
  • Шаг 2: Реализуйте функцию удаления
  • Шаг 3: Реализуйте функцию модификации
  • Шаг 4: Реализуйте функцию замены
  • Шаг 5: Работайте с исходным файлом
  • Шаг 6: Комплексные упражнения

9.3 Реализация

Шаг 1: Реализуйте функцию запроса

Заказ значение
объектный файл опций sed в целевом файлезапрос фильтраилизаменять

необязательный параметр

по желанию английский значение
p print Распечатать
$ представляет последнюю строку
-n Показать только обработанные результаты
-e expression Процесс согласно выражению
  • Упражнение 1. Перечислите данные строк 1–5 файла 1.txt.

sed -n -e '1,5p' 1.txt 
  • Упражнение 2 Перечислите все данные в 01.txt

sed -n -e '1,$p' 1.txt 
  • Упражнение 3 Перечислите все данные в 01.txt и отобразите номер строки

по желанию значение
= вывести номер текущей строки
sed -n -e '1,$=' -e '1,$p' 1.txt 

简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
  • Упражнение 4: Найдите строку, содержащую корень, в 01.txt

Отвечать:

sed -n -e '/root/p' 1.txt
  • Упражнение 5 Перечислите содержимое root в 01.txt, root не чувствителен к регистру, и отобразите номер строки

по желанию английский значение
I ignore игнорировать регистр

Отвечать:

nl 1.txt | sed -n -e '/root/Ip'

nl 01.txt | grep -i root

cat -n 01.txt | grep -i root
  • Упражнение 6 Узнай буквы в 1.txtrза которыми следуют строки из нескольких букв t и номера строк

по желанию английский значение
-r regexp-extended Определить регулярные

Отвечать:

nl 01.txt | sed -nr -e '/r+t/p'

или

sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt

Шаг 2: Реализуйте функцию удаления

  • Упражнение 1. Удалите первые 3 строки данных в файле 01.txt и отобразите номера строк.

по желанию английский значение
d delete удалить указанный контент

Отвечать:

nl 01.txt | sed -e '1,3d'
  • Упражнение 2. Сохраните первые 4 строки данных в файле 1.txt и отобразите номера строк.

Отвечать:

nl 01.txt | sed -e '5,$d'

nl 1.txt | sed -n -e '1,4p'

Шаг 3: Реализуйте функцию модификации

  • Упражнение 1. Добавьте aaaaa после второй строки 01.txt и отобразите номер строки

параметр английский значение
i insert ЦельФронтВставить содержимое
a append Цельпозжедополнительный контент

Отвечать:

nl 01.txt | sed -e '2a aaaaa'
  • Упражнение 2. Добавьте bbbbb перед строкой 1 файла 1.txt и отобразите номер строки.

Отвечать:

nl 01.txt | sed -e '1i bbbbb'

Шаг 4: Реализуйте функцию замены

  • Упражнение 1 Замените nologin в 1.txt на huawei и отобразите номер строки

английский значение
s/oldString/newString/ replace заменять

Отвечать:

nl 1.txt | sed -e 's/nologin/huawei/'
  • Упражнение 2 Замените строки 1 и 2 в 01.txt на aaa и отобразите номер строки

опции английский
2c 新字符串 replace Заменить выбранные строки новой строкой

Отвечать:

nl passwd | sed -e '1,2c aaa'

Шаг 5: Работайте с исходным файлом

  • Упражнение 1 Замените nologin на huawei в 01.txt

параметр английский значение
-i in-place Заменить исходное содержимое файла

Отвечать:

sed -i -e 's/nologin/huawei/' 01.txt
  • Упражнение 2 Замените строки 2 и 3 в файле 01.txt на aaaaaa

Отвечать:

sed -i -e '2,3c aaa' 01.txt

Примечание: Перед выполнением операции лучше сделать резервную копию данных, в случае неправильной операции данные восстановить невозможно!

  • Упражнение 3. Удалите первые 2 строки данных в 01.txt и удалите данные в исходном файле.

Отвечать:

sed -i -e '1,2d' 01.txt


nl passwd 查看数据

Шаг 6: Комплексные упражнения

  • Упражнение 1 Получить IP-адрес

Отвечать:

ifconfig eth0 | grep "inet addr" | sed -e 's/^.*inet addr://' | sed -e 's/Bcast:.*$//' 
  • Упражнение 2. Извлеките данные из 1.txt, сопоставьте содержимое, содержащее root, и замените nologin на itheima.

Отвечать:

nl 01.txt | grep 'root' | sed -e 's/nologin/itheima/'

或者

nl 01.txt | sed -n -e '/root/p' | sed -e 's/nologin/itheima/'

或者

nl 01.txt | sed -n -e '/root/{s/nologin/itheima/p}' #只显示替换内容的行
  • Упражнение 3. Извлеките данные из файла 1.txt, удалите первые две строки и замените nologin на itheima и отобразите номер строки.

Отвечать:

nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'