3

Скажем, у меня есть файл, структурированный так:

X последовательность 1 это

ABCDE FGH HIJ

X последовательность 2 это

ABCDE FGH HIJ

Как бы я условно удалил пробелы? Я знаю, что фрагмент ниже удалит все пробелы. Как бы я мог удалить пробелы только в строках, начинающихся с X?

sed 's/ //g' 

Я также видел

 '/^startswith

был использован, но не могу связать их вместе, чтобы работать.

Благодарю.

1 ответ1

3

В awk общим синтаксисом является адрес, за которым следует блок кода, где "адрес" - это либо номер строки, либо /regex/ либо разделенный запятыми from,to диапазона.

Поэтому, если вы хотите сопоставить строки, начинающиеся с X, и применить к ним подстановку:

/^X/ { gsub(/ /, ""); } { print; }

(2-й блок является безадресным, поэтому он печатает все строки.)

Синтаксис sed аналогичен, за исключением того, что команды короче (s/…/…/ для подстановки), а блоки с одной командой не нуждаются в фигурных скобках. Таким образом, ту же задачу можно выполнить в sed, используя:

/^X/ { s/ //g; }

или короче

/^X/ s/ //g

(Sed также не нуждается в явном блоке "print", так как там печать уже используется по умолчанию, если не указан ключ -n. Но у него есть команда для печати на p

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .