Удаление второго символа в каждой строке с помощью sed

Это последняя команда в списке условий -, которая определяет выход из цикла while.

while
  clear
  "is_purple_present_monitoring_script" | grep purple
do
  sleep 15
done

Вы можете переместить условие в список действий -и использовать breakтам (и использовать trueили :в качестве условия -списка ), как с:

while
  true
do
  clear
  "is_purple_present_monitoring_script" | grep purple || break
  sleep 15
done

Но это был бы весьма надуманный способ использования цикла while.

2
11.08.2019, 10:48
3 ответа

Если ваш sedподдерживает обратные ссылки:

sed -E 's/^(.)./\1/'
2
27.01.2020, 21:53
sed 's/.//2' sample

Замыкающий 2является «флагом» для команды sв sed(, точно так же, как иногда более -, используемым g, является ), и он указывает sedдействовать только на 2-е совпадение регулярного выражения в каждой строке. Поскольку регулярное выражение.(соответствует любому одиночному символу ), это удалит второй символ из каждой строки ввода.

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

4
27.01.2020, 21:53

В вашем конкретном случае

Вы можете использовать следующее правило

sed 's/.//2' sample

, где 2соответствует второму символу.

В качестве примера для фиктивного входного файла с именемtest.txt

qwertyuiop
asdfghjkl
zxcvbnm

вывод команды sed 's/.//2' test.txtравен

qertyuiop
adfghjkl
zcvbnm

Как правило

Вы можете удалить символ Nthшаблона .(, т. е. все символы ), используя

sed 's/.//N' sample
0
27.01.2020, 21:53

Теги

Похожие вопросы