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

Как я соответствую нечувствительному к регистру regex и удаляю его одновременно

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

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

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

sed -e "/pattern/d" filepath

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

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

sed -e "/pattern/replace/id" filepath > newfilepath
32
задан Brian Tompsett - 汤莱恩 6 July 2015 в 11:28
поделиться

2 ответа

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

sed -e "/pattern/Id" filepath
50
ответ дан 27 November 2019 в 20:49
поделиться

вы можете использовать (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

ИЛИ просто с shell(bash)

#!/bin/bash
shopt -s nocasematch
while read -r line
do
    case "$line" in
        *pattern* ) echo $line;
    esac
done <"file"
1
ответ дан 27 November 2019 в 20:49
поделиться
Другие вопросы по тегам:

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