50 примеров команд `but`

50 Sed Command Examples



`sed` - полезная функция обработки текста в GNU / Linux. Полная форма sed - это Stream Editor. Многие типы простых и сложных задач обработки текста могут быть легко решены с помощью команды `sed`. Любую конкретную строку в тексте или файле можно искать, заменять и удалять, используя регулярное выражение с командой `sed. Но эта команда временно выполняет все типы модификации, и исходное содержимое файла по умолчанию не изменяется. При необходимости пользователь может сохранить измененный контент в другом файле. Основное использование команды `sed` объясняется в этом руководстве на 50 уникальных примерах. Перед тем, как начать это руководство, вы должны проверить установленную версию` sed` в вашей операционной системе, выполнив следующую команду. Учебник разработан на основе GNU sed. Таким образом, эта версия `sed` потребуется для практики примеров, показанных в этом руководстве.

$sed --версия

Следующий вывод показывает, что в системе установлен GNU Sed версии 4.4.









Синтаксис:



sed [параметры]...[сценарий] [файл]

Если в команде `sed` имя файла не указано, сценарий будет работать со стандартными входными данными. Скрипт `sed` может выполняться без каких-либо опций.





Содержание :

  1. Простая подстановка текста с помощью 'sed'
  2. Заменить все экземпляры текста в определенной строке файла с помощью опции «g»
  3. Заменить только второе совпадение в каждой строке
  4. Заменить только последнее совпадение в каждой строке
  5. Заменить первое совпадение в файле новым текстом
  6. Заменить последнее совпадение в файле новым текстом
  7. Экранирование обратной косой черты в командах замены для управления поиском и заменой путей к файлам
  8. Замените полный путь всех файлов только именем файла без каталога
  9. Заменить текст, но только если в строке найден другой текст
  10. Заменить текст, но только если какой-либо другой текст не найден в строке
  11. Добавьте строку до и после соответствующего шаблона с помощью ‘ 1 '
  12. Удалить совпадающие строки
  13. Удалить совпадающую строку и 2 строки после совпадающей строки
  14. Удалить все пробелы в конце строки текста
  15. Удалите все строки, которые совпадают два раза в строке
  16. Удалите все строки с единственным пробелом
  17. Удалить все непечатаемые символы
  18. Если в строке есть совпадение, добавьте что-нибудь в конец строки
  19. Если есть совпадение в строке, вставьте строку перед совпадением
  20. Если есть совпадение в строке, вставьте строку после совпадения
  21. Если совпадений нет, добавьте что-нибудь в конец строки
  22. Если совпадений нет, удалите строку
  23. Дублировать совпадающий текст после добавления пробела после текста
  24. Заменить одну из строк в списке новой строкой
  25. Замените совпавшую строку строкой, содержащей символы новой строки
  26. Удалите символы новой строки из файла и вставьте запятую в конце каждой строки
  27. Удалите запятые и добавьте новые строки, чтобы разделить текст на несколько строк.
  28. Найти совпадение без учета регистра и удалить строку
  29. Найдите совпадение без учета регистра и замените его новым текстом
  30. Найдите совпадение без учета регистра и замените его заглавными буквами одного и того же текста
  31. Найдите совпадение без учета регистра и замените его строчными буквами одного и того же текста
  32. Заменить все прописные буквы в тексте строчными
  33. Найдите число в строке и добавьте символ валюты после числа
  34. Добавляйте запятые к числам, которые содержат более 3 цифр
  35. Заменить символы табуляции на 4 пробела
  36. Замените 4 последовательных символа пробела на символ табуляции
  37. Обрезать все строки до первых 80 символов
  38. Найдите строковое регулярное выражение и добавьте после него некоторый стандартный текст
  39. Искать строковое регулярное выражение и вторую копию найденной строки после него
  40. Запуск многострочных сценариев `sed` из файла
  41. Сопоставьте многострочный шаблон и замените новым многострочным текстом
  42. Заменить порядок двух слов, соответствующих шаблону
  43. Используйте несколько команд sed из командной строки
  44. Объедините sed с другими командами
  45. Вставить пустую строку в файл
  46. Удалите все буквенно-цифровые символы из каждой строки файла.
  47. Используйте '&' для соответствия строке
  48. Сменить пару слов
  49. Делайте первый символ каждого слова заглавным
  50. Печатать номера строк файла

1. Простая подстановка текста с помощью 'sed'

Любая конкретная часть текста может быть найдена и заменена с помощью поиска и замены шаблона с помощью команды `sed`. В следующем примере «s» обозначает задачу поиска и замены. Слово «Bash» будет искать в тексте, языке сценариев Bash, и, если слово существует в тексте, оно будет заменено словом «Perl».



$выбросил 'Язык сценариев Bash' | sed 's / Bash / Perl /'

Выход:

Слово «Баш» присутствует в тексте. Таким образом, на выходе получается «Perl Scripting Language».

Команда `sed` также может использоваться для замены любой части содержимого файла. Создайте текстовый файл с именем weekday.txt со следующим содержанием.

weekday.txt

понедельник
вторник
среда
четверг
Пятница
Суббота
Воскресенье

Следующая команда выполнит поиск и заменит текст «Воскресенье» на текст «Воскресенье - выходной».

$Котweekday.txt
$sed 's / воскресенье / воскресенье - выходной /'weekday.txt

Выход:

«Воскресенье» существует в файле weekday.txt, и это слово заменяется текстом «Воскресенье - выходной» после выполнения указанной выше команды «sed».

Наверх

2. Заменить все экземпляры текста в определенной строке файла с помощью опции «g».

Параметр ‘g’ используется в команде `sed` для замены всех совпадений с шаблоном. Создайте текстовый файл с именем python.txt со следующим содержанием, чтобы узнать об использовании опции «g». Этот файл содержит слово. «Python» многократно.

python.txt

Python - очень популярный язык.
Python прост в использовании. Python легко изучить.
Python - кроссплатформенный язык

Следующая команда заменит все вхождения ‘ Python ’Во второй строке файла, python.txt . Здесь, «Python» встречается два раза во второй строке.

$ cat python.текст
$ sed'2 s / Python / perl / g'питон.текст

Выход:

Следующий вывод появится после запуска скрипта. Здесь все слова «Python» во второй строке заменены на «Perl».

Наверх

3. Замените только второе совпадение в каждой строке.

Если какое-либо слово встречается в файле несколько раз, то конкретное вхождение слова в каждой строке можно заменить с помощью команды `sed` с номером вхождения. Следующая команда `sed` заменит второе вхождение шаблона поиска в каждой строке файла, python.txt .

$ sed's / Python / perl / g2'питон.текст

Выход:

Следующий вывод появится после выполнения указанной выше команды. Здесь поисковый текст ' Python ’ появляется два раза только во второй строке и заменяется текстом ‘ Perl '.

Наверх

4. Заменить только последнее совпадение в каждой строке.

Создайте текстовый файл с именем lang.txt со следующим содержанием.

lang.txt

Язык программирования Bash. Язык программирования Python. Язык программирования Perl.
Язык гипертекстовой разметки.
Расширяемый язык разметки.

$sed 's / (. * ) Programming / 1Scripting /'lang.txt

Наверх

5. Замените первое совпадение в файле новым текстом.

Следующая команда заменит только первое совпадение поискового шаблона ‘ Python ‘По тексту, ‘Perl ‘. Здесь, '1' используется для сопоставления с первым вхождением шаблона.

$ cat python.текст
$ sed'1 s / Python / perl /'питон.текст

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Здесь. первое вхождение «Python» в первой строке заменяется на «perl».

Наверх

6. Замените последнее совпадение в файле новым текстом.

Следующая команда заменит последнее вхождение шаблона поиска, ‘Python ‘По тексту, «Баш». Здесь, ‘$’ символ используется для соответствия последнему вхождению шаблона.

$ cat python.текст
$ sed -e'$ s / Python / Bash /'питон.текст

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

7. Удаление обратной косой черты в командах замены для управления поиском и заменой путей к файлам.

Необходимо избегать обратной косой черты в пути к файлу для поиска и замены. Следующая команда `sed` добавит обратную косую черту () в путь к файлу.

$выбросил /дом/убунту/код/Perl/add.pl| sed 's;/;\/;g'

Выход:

Путь к файлу, ‘/Home/ubuntu/code/perl/add.pl’ предоставляется в качестве входных данных в команде `sed`, и следующий результат появится после выполнения указанной выше команды.

Наверх

8. Замените полный путь ко всем файлам только на имя файла без каталога.

Имя файла можно очень легко получить из пути к файлу, используя ` basename` команда. Команда `sed` также может использоваться для получения имени файла из пути к файлу. Следующая команда получит имя файла только из пути к файлу, предоставленного командой `echo`.

$выбросил '/home/ubuntu/temp/myfile.txt' | sed 's /.*///'

Выход:

Следующий вывод появится после выполнения указанной выше команды. Здесь имя файла ' myfile.txt ’ печатается как вывод.

Наверх

9. Заменить текст, но только если в строке найден другой текст.

Создайте файл с именем ‘ dept.txt ’ со следующим содержимым, чтобы заменить любой текст на другой текст.

dept.txt

Список общего количества студентов:

CSE - Count
EEE - Count
Гражданский - Граф

В следующей команде `sed` используются две команды замены. Здесь текст ' Считать ‘Будет заменен на 100 в строке, содержащей текст, ‘CSE ‘И текст‘ Считать' будет заменен на 70 в строке, содержащей шаблон поиска, ‘ EEE ’ .

$Котdept.txt
$sed -А также '/ CSE / s / Count / 100 /; / EEE / s / Count / 70 /; 'dept.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

10. Заменить текст, но только если какой-либо другой текст не найден в строке.

Следующая команда `sed` заменит значение« Count »в строке, не содержащей текста,« CSE ». dept.txt файл содержит две строки, которые не содержат текста «CSE». Так что ' Считать ‘Текст будет заменен на 80 в двух строках.

$Котdept.txt
$sed -А также '/ CSE /! s / Count / 80 /; 'dept.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

11. Добавьте строку до и после соответствующего шаблона, используя « 1».

Последовательность совпадающих шаблонов команды `sed` обозначается« 1 »,« 2 »и так далее. Следующая команда `sed` будет искать шаблон,‘ Bash ’, и, если он совпадает, тогда к нему будет доступ через‘ 1 ’в части заменяющего текста. Здесь текст «Bash» ищется во входном тексте, и один текст добавляется перед, а другой текст добавляется после « 1».

$выбросил 'Баш язык' | sed 's / (Bash ) / Изучите 1 программирование /'

Выход:

Следующий вывод появится после выполнения указанной выше команды. Здесь, ' Учиться' текст добавлен перед «Баш» а также ' программирование Текст добавляется после ‘ Баш.

Наверх

12. Удалите совпадающие строки.

‘D’ опция используется в команде `sed` для удаления любой строки из файла. Создайте файл с именем os.txt и добавьте следующий контент, чтобы проверить функцию ‘D’ вариант.

кошка os.txt

Окна
Linux
Android
ТЫ

Следующая команда `sed` удалит эти строки из os.txt файл, содержащий текст «OS».

$Котos.txt
$sed '/ The D'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

13. Удалите совпадающую строку и 2 строки после совпадающей строки.

Следующая команда удалит три строки из файла os.txt если узор, ‘ Linux ’ найден. os.txt содержит текст, ‘Linux ‘Во второй строке. Итак, эта строка и следующие две строки будут удалены.

$sed '/ Linux /, + 2d'os.txt

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

14. Удалите все пробелы в конце строки текста.

С использованием [:пустой:] Класс может использоваться для удаления пробелов и табуляции из текста или содержимого любого файла. Следующая команда удалит пробелы в конце каждой строки файла, os.txt.

$Котos.txt
$sed 's / [[: blank:]] * $ //'os.txt

Выход:

os.txt содержит пустые строки после каждой строки, которые удаляются указанной выше командой `sed`.

Наверх

15. Удалите все строки, в которых есть совпадения два раза.

Создайте текстовый файл с именем, input.txt со следующим содержимым и дважды удалите те строки файла, которые содержат шаблон поиска.

input.txt

PHP - это язык сценариев на стороне сервера.
PHP - это язык с открытым исходным кодом, и PHP чувствителен к регистру.
PHP не зависит от платформы.

Текст «PHP» содержится два раза во второй строке файла, input.txt . В этом примере используются две команды `sed` для удаления тех строк, которые содержат шаблон‘ php ' два раза. Первая команда `sed` заменит второе вхождение‘ php ’в каждой строке на‘ дл ‘И отправьте вывод во вторую команду` sed` в качестве ввода. Вторая команда `sed` удалит те строки, которые содержат текст,‘ дл '.

$Котinput.txt
$sed 's / php / dl / i2; t'input.txt| sed '/ дл / д'

Выход:

input.txt файл имеет две строки, которые содержат шаблон, ‘Php’ два раза. Итак, после выполнения вышеуказанных команд появится следующий вывод.

Наверх

16. Удалите все строки, в которых есть только пробелы.

Выберите любой файл, содержащий пустые строки в содержимом, чтобы протестировать этот пример. input.txt Файл, созданный в предыдущем примере, содержит две пустые строки, которые можно удалить с помощью следующей команды `sed`. Здесь «^ $» используется для поиска пустых строк в файле, input.txt.

$Котinput.txt
$sed '/ ^ $ / д'input.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

17. Удалите все непечатаемые символы.

Непечатаемые символы можно удалить из любого текста, заменив непечатаемые символы на них. В этом примере используется класс [: print:] для определения непечатаемых символов. « T» - это непечатаемый символ, и его нельзя проанализировать напрямую с помощью команды `echo`. Для этого символ « t» назначается в переменной $ tab, которая используется в команде `echo`. Вывод команды `echo` отправляется в команде` sed`, которая удаляет символ ‘ t’ из вывода.

$вкладка= $' t'
$выбросил 'Привет$ tabWorld'
$выбросил 'Привет$ tabWorld' | sed 's / [^ [: print:]] // g'

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Первая команда `echo 'напечатает вывод с пробелом табуляции, а команда` sed` напечатает вывод после удаления пробела табуляции.

Наверх

18. Если в строке есть совпадение, добавьте что-нибудь в конец строки.

Следующая команда добавит «10» в конец строки, содержащей текст «Windows» в os.txt файл.

$Котos.txt
$sed '/ Windows / s / $ / 10 /'os.txt

Выход:

После выполнения команды появится следующий вывод.

Наверх

19. Если в строке есть совпадение, вставьте строку перед текстом.

Следующая команда `sed` будет искать текст,‘ PHP не зависит от платформы » в input.txt созданный ранее файл. Если файл содержит этот текст в какой-либо строке, то ' PHP - это интерпретируемый язык » будет вставлен перед этой строкой.

$Котinput.txt
$sed '/ PHP не зависит от платформы / s / ^ / PHP является интерпретируемым языком. N /'input.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

20. Если в строке есть совпадение, вставьте строку после этой строки.

Следующая команда `sed` будет искать текст,‘ Linux ’ в файле os.txt и если текст существует в какой-либо строке, то новый текст, ‘ Ubuntu ‘Будет вставлен после этой строки.

$Котos.txt
$sed 's / Linux / & nUbuntu /'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

21. Если совпадений нет, добавьте что-нибудь в конец строки

Следующая команда `sed` будет искать эти строки в os.txt который не содержит текста, «Linux» и добавьте текст ' Операционная система ‘В конце каждой строки. Здесь, ' $ Символ ‘используется для обозначения строки, в которую будет добавлен новый текст.

$Котos.txt
$sed '/ Linux /! S / $ / Операционная система / 'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. В файле os.txt есть три строки, которые не содержат текста «Linux» и нового текста, добавленного в конце этих строк.

Наверх

22. Если совпадений нет, удалите строку

Создайте файл с именем web.txt и добавьте следующее содержимое и удалите строки, которые не содержат соответствующий шаблон. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery Следующая команда `sed` будет искать и удалять те строки, которые не содержат текст,« CSS ». $ cat web.txt $ sed ‘/ CSS /! d’ web.txt Выход: Следующий вывод появится после выполнения вышеуказанных команд. В файле есть одна строка, содержащая текст «CSE». Итак, вывод содержит всего одну строку.

Наверх

23. Дублировать совпадающий текст после добавления пробела после текста.

Следующая команда `sed` будет искать слово‘ to ’в файле, python.txt и если слово существует, то то же слово будет вставлено после поискового слова путем добавления пробела. Здесь, '&' символ используется для добавления повторяющегося текста.

$Котpython.txt
$sed -А также 's / to / & to / g'python.txt

Выход:

Следующий вывод появится после выполнения команд. Здесь слово «to» ищется в файле, python.txt и это слово существует во второй строке этого файла. Так, ’С пробелом добавляется после совпадающего текста.

Наверх

24. Замените один список строк новой строкой.

Вы должны создать два файла списков для тестирования этого примера. Создайте текстовый файл с именем list1.txt и добавьте следующий контент.

cat list1.txt

1001знак равно>Джафар Али
1023знак равно>Нир Хоссейн
1067знак равно>Джон Мишель

Создайте текстовый файл с именем list2.txt и добавьте следующий контент.

$ cat list2.txt

1001CSE GPA3,63
1002CSE GPA3,24
1023CSE GPA3.11
1067CSE GPA3,84

Следующая команда `sed` сопоставит первый столбец двух текстовых файлов, показанных выше, и заменит соответствующий текст значением третьего столбца файла. list1.txt.

$Котlist1.txt
$Котlist2.txt
$sed ``Котlist1.txt| awk '{print' -e s / '$ 1' / '$ 3' / '}'``<<<'`cat list2.txt`'

Выход:

1001, 1023 и 1067 из list1.txt файл соответствует трем данным list2.txt файла, и эти значения заменяются соответствующими именами третьего столбца list1.txt .

Наверх

25. Замените совпавшую строку строкой, содержащей символы новой строки.

Следующая команда будет принимать входные данные от команды `echo` и искать слово, «Python» в тексте. Если слово существует в тексте, то новый текст, «Добавленный текст» будет вставлен с новой строкой. $ echo Bash Perl Python Java PHP ASP | sed ‘s / Python / Добавленный текст n /’ Выход: Следующий вывод появится после выполнения указанной выше команды.

Наверх

26. Удалите символы новой строки из файла и вставьте запятую в конце каждой строки.

Следующая команда `sed` заменит каждую новую строку запятой в файле os.txt . Здесь, -С участием опция используется для разделения строки символом NULL.

$sed -С участием 's / n /, / g'os.txt

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

27. Удалите запятые и добавьте новую строку, чтобы разделить текст на несколько строк.

Следующая команда `sed` примет разделенную запятыми строку из команды` echo` в качестве входных данных и заменит запятую на новую строку.

$выбросил 'Каниз Фатема, 30-е, партия' | sed 's /, / п/грамм'

Выход:

Следующий вывод появится после выполнения указанной выше команды. Входной текст содержит три данных, разделенных запятыми, которые заменяются символом новой строки и печатаются в три строки.

Наверх

28. Найдите совпадение без учета регистра и удалите строку

‘I’ используется в команде `sed` для совпадения без учета регистра, что указывает на игнорирование регистра. Следующая команда `sed` будет искать строку, содержащую слово, ‘Linux ‘И удалите строку из os.txt файл.

$Котos.txt
$sed '/ linux / Id'os.txt

Выход:

Следующий вывод появится после выполнения указанной выше команды. os.txt содержит слово «Linux», совпадающее с шаблоном, «linux» для поиска без учета регистра и удаляется.

Наверх

29. Найдите совпадение без учета регистра и замените его новым текстом.

Следующая команда `sed` будет принимать входные данные от команды` echo` и заменять слово «bash» словом «PHP».

$выбросил 'Мне нравится программировать на bash' | sed 's / Bash / PHP / i'

Выход:

Следующий вывод появится после выполнения указанной выше команды. Здесь слово «Bash» соответствует слову «bash» для поиска без учета регистра и заменено словом «PHP».

Наверх

30. Найдите совпадение без учета регистра и замените его заглавными буквами.

‘ U’ используется в `sed` для преобразования любого текста в прописные буквы. Следующая команда `sed` будет искать слово, ‘Linux ' в os.txt файл, и если слово существует, оно заменит слово заглавными буквами.

$Котos.txt
$sed 's/(linux)/U1/Ig'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Слово «Linux» в файле os.txt заменяется словом «LINUX».

Наверх

31. Найдите совпадение без учета регистра и замените его строчными буквами одного и того же текста.

' THE' используется в `sed` для преобразования любого текста в строчные буквы. Следующая команда `sed` будет искать слово, «Linux» в os.txt файл и замените слово строчными буквами.

$Котos.txt
$sed 's / (Linux ) / L 1 / Ig'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Слово «Linux» здесь заменено словом «linux».

Наверх

32. Замените все прописные буквы текста строчными.

Следующая команда `sed` будет искать все символы верхнего регистра в os.txt файл и замените символы строчными буквами с помощью ‘ L’.

$Котos.txt
$sed 's / (. * ) / L 1 /'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

33. Найдите число в строке и добавьте любой символ валюты перед количество

Создайте файл с именем items.txt со следующим содержанием.

items.txt

HDD 100
Монитор 80
Мышь 10

Следующая команда `sed` будет искать число в каждой строке items.txt файла и добавьте символ валюты '$' перед каждым числом.

$Котitems.txt
$sed 's/([0-9])/$1/g'items.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Здесь перед номером каждой строки добавляется символ «$».

Наверх

34. Добавляйте запятые к числам, состоящим из более чем трех цифр.

Следующая команда `sed` будет принимать число в качестве входных данных из команды` echo` и добавлять запятую после каждой группы из трех цифр, считая справа. Здесь «: a» обозначает метку, а «ta» используется для повторения процесса группировки.

$выбросил '5098673' | sed -А также-А также 's / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta'

Выход:

Число 5098673 дается в команде `echo`, а команда` sed` сгенерировала число 5098673, добавив запятую после каждой группы из трех цифр.

Наверх

35. Заменяет символ табуляции на 4 пробела.

Следующая команда `sed` заменит каждый символ табуляции ( t) четырьмя пробелами. Символ «$» используется в команде `sed` для соответствия символу табуляции, а символ« g »используется для замены всех символов табуляции.

$выбросил -А также '1 т2 т3 ' | sed$'s / t / / g'

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

36. Заменяет 4 последовательных символа пробела на символ табуляции.

Следующая команда заменит 4 последовательных символа символом табуляции ( t).

$выбросил -А также '1 2' | sed$'s / / t / g'

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

37. Обрезать все строки до первых 80 символов.

Создайте текстовый файл с именем in.txt который содержит строки более 80 символов для проверки этого примера.

in.txt

PHP - это язык сценариев на стороне сервера.
PHP - это язык с открытым исходным кодом, и PHP чувствителен к регистру. PHP не зависит от платформы.
Следующая команда `sed` обрежет каждую строку in.txt файл на 80 символов.

$Котin.txt
$sed 's / (^. {1,80 } ). * / 1 /'in.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Вторая строка файла in.txt содержит более 80 символов, и при выводе эта строка обрезается.

Наверх

38. Найдите строковое регулярное выражение и добавьте после него какой-нибудь стандартный текст.

Следующая команда `sed` будет искать текст,‘ Привет ‘Во вводимом тексте и добавьте текст‘ Джон ‘После этого текста.

$выбросил 'Привет, как дела?' | sed 's / (привет ) / 1 Джон /'

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

39. Найдите строковое регулярное выражение и добавьте текст после второго совпадения в каждой строке.

Следующая команда `sed` будет искать текст,‘ PHP ‘В каждой строке input.txt и замените второе совпадение в каждой строке текстом, «Новый текст добавлен» .

$Котinput.txt
$sed 's / (PHP ) / 1 (добавлен новый текст) / 2'input.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. Текст поиска, ‘ PHP ’Дважды встречается во второй и третьей строках input.txt файл. Итак, текст ' Добавлен новый текст ’Вставляется во вторую и третью строки.

Наверх

40. Запуск многострочных скриптов `sed` из файла

В файле можно хранить несколько сценариев sed, и все сценарии можно выполнять вместе, запустив команду sed. Создайте файл с именем ‘Sedcmd ‘И добавьте следующее содержание. Здесь в файл добавлены два сценария `sed`. Один скрипт заменит текст ‘ PHP ' к ‘ASP «Другой сценарий заменит текст», независимый ‘По тексту‘ зависимый '.

sedcmd

s/PHP/ASP/
s/независимый/зависимый/

Следующая команда `sed` заменит весь« PHP »и« независимый »текст на« ASP »и« зависимый ». Здесь опция «-f» используется в команде «sed» для выполнения сценария «sed» из файла.

$Котsedcmd
$sed -fsedcmd input.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

41. Сопоставьте многострочный шаблон и замените его новым многострочным текстом.

Следующая команда `sed` будет искать многострочный текст, ‘Linux nAndroid’ и если шаблон совпадает, то совпадающие строки будут заменены многострочным текстом, ‘Ubuntu nAndroid Lollipop ‘. Здесь P и D используются для многострочной обработки.

$Котos.txt
$sed '$! N; s / Linux nAndoid / Ubuntu nAndoid Lollipop /; P; D'os.txt

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

42. Замена порядка двух слов в тексте, соответствующих шаблону.

Следующая команда `sed` будет вводить два слова из команды` echo` и менять порядок этих слов.

$выбросил 'Perl Python' | sed -А также 's / ([^] * ) * ([^] * ) / 2 1 /'

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

43. Выполнение нескольких команд `sed` из командной строки.

Параметр ‘-e’ используется в команде `sed` для запуска нескольких скриптов` sed` из командной строки. Следующая команда `sed` принимает текст в качестве входных данных из команды` echo` и заменяет ‘ Ubuntu ' к ' Кубунту ' а также ' сотни ' к ' Fedora '.

$выбросил 'Ubuntu Centos Debian' | sed -А также s / Ubuntu / Kubuntu /; s / Centos / Fedora / '

Выход:

Следующий вывод появится после выполнения указанной выше команды. Здесь «Ubuntu» и «Centos» заменены на «Kubuntu» и «Fedora».

Наверх

44. Комбинируйте `sed` с другими командами.

Следующая команда объединит команду `sed` с командой` cat`. Первая команда `sed` будет принимать входные данные от os.txt файл и отправьте вывод команды второй команде `sed` после замены текста 'Linux' на 'Fedora'. Вторая команда `sed` заменит текст« Windows »на« Windows 10 ».

$Котos.txt| sed 's / Linux / Fedora /'| sed 's / windows / Windows 10 / i'

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

45. Вставить пустую строку в файл.

Создайте файл с именем stdlist со следующим содержанием.

stdlist

#ID # Имя
[101] -Но
[102] -Неха

Опция «G» используется для вставки пустой строки в файл. Следующая команда `sed` вставит пустые строки после каждой строки stdlist файл.

$Котstdlist
$sedG stdlist

Выход:

Следующий вывод появится после выполнения вышеуказанных команд. После каждой строки файла вставляется пустая строка.

Наверх

46. ​​Замените все буквенно-цифровые символы пробелом в каждой строке файла.

Следующая команда заменит все буквенно-цифровые символы пробелом в stdlist файл.

$Котstdlist
$ но 's / [A-Za-z0-9] // g'stdlist

Выход:

Следующий вывод появится после выполнения вышеуказанных команд.

Наверх

47. Используйте '&' для печати совпадающей строки.

Следующая команда выполнит поиск слова, начинающегося с «L», и заменит текст, добавив «Соответствующая строка - ‘С совпадающим словом с помощью символа‘ & ’. Здесь «p» используется для печати измененного текста.

$sed -n 's / ^ L / Соответствующая строка - & / p'os.txt

Выход:

Следующий вывод появится после выполнения указанной выше команды.

Наверх

48. Переключить пару слов в файле.

Создайте текстовый файл с именем course.txt со следующим содержимым, содержащим пару слов в каждой строке.

course.txt

PHP ASP
MySQL Oracle
CodeIgniter Laravel

Следующая команда переключит пару слов в каждой строке файла, course.txt .

$sed 's / ([^] * ) * ([^] * ) / 2 1 /'course.txt

Выход:

Следующий вывод появится после переключения пары слов в каждой строке.

Наверх

49. Делайте первый символ каждого слова заглавным.

Следующая команда `sed` возьмет входной текст из команды` echo` и преобразует первый символ каждого слова в заглавную букву.

$выбросил 'Мне нравится программировать на bash' | sed 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'

Выход:

Следующий вывод появится после выполнения указанной выше команды. Входной текст, мне нравится программирование на bash, печатается как I Like Bash Programming после заглавной буквы в первом слове.

Наверх

50. Вывести номера строк файла.

Символ ‘=’ используется командой `sed` для вывода номера строки перед каждой строкой файла. Следующая команда распечатает содержимое os.txt файл с номером строки.

$sed знак равноos.txt

Выход:

Следующий вывод появится после выполнения указанной выше команды. Есть четыре строки в os.txt файл. Итак, номер строки печатается перед каждой строкой файла.

Наверх

Заключение:

Различные варианты использования команды `sed` объясняются в этом руководстве на очень простых примерах. Вывод всех упомянутых здесь сценариев `sed` генерируется временно, а содержимое исходного файла остается неизменным. Но если вы хотите, вы можете изменить исходный файл, используя опцию –i или –in-place команды `sed. Если вы новый пользователь Linux и хотите изучить основные способы использования команды `sed` для выполнения различных типов задач манипуляции строками, то это руководство поможет вам. Надеюсь, после прочтения этого руководства любой пользователь получит ясное представление о функциях команды `sed`.

Часто задаваемые вопросы

Для чего используется команда sed?

Команда sed может использоваться по-разному. При этом в основном используется для замены слов в файле или поиска и замены.

Самое замечательное в sed то, что вы можете искать слово в файле и заменять его, но вам даже не нужно открывать файл - sed просто сделает все за вас!

Кроме того, его можно использовать для удаления. Все, что вам нужно сделать, это ввести слово, которое вы хотите найти, заменить или удалить, в sed, и он отобразит его для вас - затем вы можете заменить это слово или удалить все следы слова из своего файла.

sed - фантастический инструмент, позволяющий заменять такие вещи, как IP-адреса, и все, что очень важно, что вы иначе не хотели бы помещать в файл. sed должен знать любой инженер-программист!

Что такое S и G в команде sed?

Проще говоря, функция S, которую можно использовать в sed, просто означает «подстановка». После ввода S вы можете заменить или заменить все, что хотите - просто набрав S, вы замените только первое вхождение слова в строке.

Следовательно, если у вас есть предложение или строка, в которых он упоминается более одного раза, функция S не идеальна, поскольку она заменяет только первое вхождение. Вы можете указать шаблон, чтобы S также заменял слова каждые два вхождения.

Указание G в конце команды sed произведет глобальную замену (это то, что означает G). Имея это в виду, если вы укажете G, он заменит каждое вхождение слова, которое вы выбрали, а не только первое вхождение, которое делает S.

Как запустить сценарий sed?

Вы можете запустить sed-скрипт разными способами, но наиболее распространенный из них - в командной строке. Здесь вы можете просто указать sed и файл, для которого вы хотите использовать команду.

Это позволяет вам использовать sed для этого файла, позволяя вам находить, удалять и заменять по мере необходимости.

Вы также можете использовать его в сценарии оболочки, и таким образом вы можете передать все, что хотите, сценарию, и он выполнит для вас команду поиска и замены. Это полезно, если вы не хотите указывать особо конфиденциальные данные внутри скрипта, поэтому вместо этого вы можете передать их как переменную.

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