Подтвердить что ты не робот

Использование sed для удаления не зависящей от регистра строки

Как я могу совместить не зависящее от регистров регулярное выражение и удалить его в одно и то же время

Я прочитал, что для получения нечувствительных к регистру совпадений используйте флаг "i"

sed -e "/pattern/replace/i" filepath

и удалить использование d

sed -e "/pattern/d" filepath

Я также прочитал, что могу комбинировать несколько флагов, например, 2iw

Я хотел бы знать, может ли sed сочетать я и d Я пробовал следующее, но это не сработало

sed -e "/pattern/replace/id" filepath > newfilepath
4b9b3361

Ответ 1

Для нечувствительности к регистру используйте /I вместо/i.

sed -e "/pattern/Id" filepath

Ответ 2

вы также можете использовать (g) awk.

# print case insensitive
awk 'BEGIN{IGNORECASE=1}/pattern/{print}' file

# replace with case insensitive
awk 'BEGIN{IGNORECASE=1}/pattern/{gsub(/pattern/,"replacement")}1' file

ИЛИ просто с оболочкой (bash)

#!/bin/bash
shopt -s nocasematch
while read -r line
do
    case "$line" in
        *pattern* ) echo $line;
    esac
done <"file"