sed Case Insensitive Search Matching

Posted on in Categories , , , , , , , , last updated December 14, 2008

Q. How do I perform a case-insensitive search using sed under UNIX / Linux? I’d like to match all combination of word – foo, FOO, FoO and so on while replacing or performing other operations.

A. GNU sed and other version does support a case-insensitive search using I flag after /regex/.

UNIX / Linux: sed Case Insensitive Search

To perform a case-insensitive search, enter:

cat file.txt | sed -e 's/find-word/replace-word/gI' 
cat file.txt | sed -e 's/find-word/replace-word/gI' > output.txt
sed 's/find-word/replace-word/gI' input.txt > output.txt

If you are using older sed version try,

sed 's/[wW][oO][rR][dD]/replace-word/g' input.txt > output.txt

It is easy to match first few characters, for example match both Linux and linux word:

sed 's/[Ll]inux/Unix/g' input.txt > output.txt

4 comment

  1. Hi,
    Printing with case sensitive is not working, as suggested by you. Could you check once again.

    [[email protected] ~]# yum install sed
    Loaded plugins: refresh-packagekit, rhnplugin
    Setting up Install Process
    Package sed-4.2.1-5.el6.x86_64 already installed and latest version
    Nothing to do

    [[email protected] ~]# sed -n ‘/oracle/’p passwd
    40 oracle:x:508:510::/home/oracle:/bin/bash
    41 Oracle:x:508:510::/home/oracle:/bin/bash

    [[email protected] ~]# sed -n ‘/oracle/’Ip passwd
    40 oracle:x:508:510::/home/oracle:/bin/bash
    41 Oracle:x:508:510::/home/oracle:/bin/bash

Leave a Comment