views:

303

answers:

2

How do I match a case insensitive regex and delete it at the same time

I read that to get case insensitive matches, use the flag "i" sed -e "/pattern/replace/i" filepath and to delete use d sed -e "/pattern/d" filepath

I've also read that I could combine multiple flags like 2iw

I'd like to know if sed could combine both i and d I've tried the following but it didn't work

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

+1  A: 

For case-insensitive use /I instead of /i.

sed -e "/pattern/Id" filepath
Mark Byers
Ah! it works!Feel so dumb, lolThanks!
eruina
A: 

you can use (g)awk as well.

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

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

OR just with the shell(bash)

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