Команды, связанные с трубой
Цель
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 2, $3}' 1.txt | Работайте с файлом 1.txt, разделите его запятой, напечатайте первый абзац, второй абзац и третий абзац. |
опции
опции | английский | значение |
---|---|---|
-F ',' |
field-separator | использоватьуказанный персонажсегментация |
$ + 数字 |
Получатьабзацысодержание | |
$0 |
Получатьтекущая строкасодержание | |
NF |
field | Указывает, сколько полей в текущей строке |
$NF |
представляет последнее поле | |
$(NF-1) |
представляет предпоследнее поле | |
NR |
Представляет, какая строка обрабатывается |
Шаг 3: Укажите разделитель и отобразите содержимое в соответствии с индексом
Заказ | значение |
---|---|
awk -F ' ' '{OFS="==="}{print 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(1, $4 }' score.txt | Если прошло, отобразить4 |
awk -F ',' '{if(1, 1, $4, "Не удалось"}' score.txt | Отображаемое имя, $4, успешно или неудачно |
опции
параметр | значение |
---|---|
if(0 | Если строка содержит «аа», выведите строку |
if(0 | Если **первый абзац** содержит «аа», выведите эту строку. |
if(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 | Распечатать | |
$ | представляет последнюю строку | |
-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.txt
r
за которыми следуют строки из нескольких букв 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/'