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
To begin with, if you want to delete a line containing the keyword, you would run sed as shown below. Similarly, you could run the sed command with option -n and negated p , (! p) command. To delete lines containing multiple keywords, for example to delete lines with the keyword green or lines with keyword violet.
sed by default is case sensitive. To ignore the case -i flag can be used with sed command.
GNU sed and other version does support a case-insensitive search using I flag after /regex/.
Case Insensitive Search By default, grep is case sensitive. This means that the uppercase and lowercase characters are treated as distinct. To ignore case when searching, invoke grep with the -i option (or --ignore-case ).
For case-insensitive use /I
instead of /i
.
sed -e "/pattern/Id" filepath
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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With