Строчные изменения в Unix

Я ищу способ сделать следующее с файлом с разделителями каналов в UNIX, для EACH LINE и не уверен, с чего начать:

  1. Ищите символ в строке текста (предположим, используя GREP?)
  2. Если найдено, то добавьте текст в конце этой строки (используя SED?)
  3. Если не найти, найдите другой символ в той же строке
  4. Если найдено, добавьте текст в конец строки, ничего не сделайте
  5. LOOP ДЛЯ ВСЕХ ЛИНИЙ В ФАЙЛЕ

Любые указатели будут оценены.

2 Solutions collect form web for “Строчные изменения в Unix”

Это все работает, вам не нужны дополнительные инструменты:

Предположим, вы хотите добавить foo в конец строки, содержащей f и bar в конце строк без f , но с b

 sed '/f/{ s/$/foo/ b } /b/s/$/bar/' 

Вы можете «адресовать» строки с помощью /pattern/ , поэтому следующие команды выполняются только в том случае, если они содержат шаблон. Таким образом, в этом примере только строки, которые содержат f запускают выполнение замены s и b ( {} group) команды, поэтому все внутри применяется только при согласованном адресе. b ветвится до конца скрипта не добавляйте другую строку для соответствия b .

Разный подход без ветви:

 sed '/f/s/$/foo/;s/^[^f]*b[^f]*$/&bar/' 

Как упражнение, вы можете понять это самостоятельно с некоторыми знаниями, используя man sed если это необходимо.

Если вы хотите добавить одну и ту же текстовую строку в конце строки для обоих сценариев (символы, которые нужно найти: «X» «Y»), вы можете сделать это следующим образом:

 sed -e 's/[XY].*/&__ADDEDTEXT__/' yourfile 

С другой стороны, если вы хотите, чтобы отдельные тексты помещались в конце строк в зависимости от символа, вы можете сделать:

 sed -e ' /X/s/$/__TEXT1__/; t /Y/s/$/__TEXT2__/ ' yourfile 

Где мы используем команду t (read as test), чтобы определить, была ли превалирующая команда s/// успешной и перейти к концу sed-кода в текущей строке. Также обратите внимание на синтаксис: / regex / s /// =>, если строка содержит регулярное выражение, затем выполните подстановку в строке.

  • Как удалить все экземпляры определенного символа из текстового файла?
  • Как размножить файл данных с другим файлом данных индекса?
  • Включает ли vi в конце файла новую строку (LF)?
  • Используйте только строки, содержащие x или меньшее количество чисел. TXT-файл
  • Проверьте, использует ли файл CRLF или LF конец строк
  • Есть что-то вроде генератора lorem ipsum?
  • Что называется символом ^ М?
  • текст, заменяющий в файле данных особый интервал
  • Потоки бит каретки и поток строки в двоичном файле во время загрузки TFTP в режиме ASCII
  • Заменить контент внутри двух конкретных строк
  • md5sum команда двоичный и текстовый режим
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.