1827894 Members
1630 Online
109969 Solutions
New Discussion

sed help

 
SOLVED
Go to solution
Larry Basford
Regular Advisor

sed help

I'm trying to filter out from a file listing only what I want.

I have 2 sed commands that seem to work but I can't combine them.
These outputs are all I want. How Can I combine them ?

# sed -n '/sgmsg[1a][0-2]\.txt/p' file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg10.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:36 sgmsg11.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsg12.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsga2.txt


# sed -n '/sgmsg[3-9].txt/p' file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt

I get this when I try.
# sed -n '/sgmsg[0-9].txt/,/sgmsg[1a][0-2]\.txt/p' file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg1.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.DUH
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg901.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 61 Aug 17 18:14 sgmsgOMNA2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 61 Aug 17 18:14 sgmsgomna2.txt

Here is my file.list
# cat file.list
drwx------ 1 BUILTIN OHIO-OMNI_MMSR 0 Aug 18 09:40 .
drwx------ 1 BUILTIN OHIO-OMNI_MMSR 0 Aug 18 09:40 ..
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg10.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 SGMSG10.TXT
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:36 sgmsg11.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsg12.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsga2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsgaa.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg1.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.DUH
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg901.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 61 Aug 17 18:14 sgmsgOMNA2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 61 Aug 17 18:14 sgmsgomna2.txt
Desaster recovery? Right !
6 REPLIES 6
John Poff
Honored Contributor
Solution

Re: sed help

Hi,

One way to do it is to use the '-e' option to specify the separate scripts. I tried it this way and got it to work:

>sed -n -e '/sgmsg[1a][0-2]\.txt/p' -e '/sgmsg[3-9].txt/p' file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg10.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:36 sgmsg11.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsg12.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsga2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt


JP

Sundar_7
Honored Contributor

Re: sed help

You can use the -e option with sed as mentioned above.

But why to complicate the things ? how about egrep ?

egrep "sgmsg[1a3-9][0-2]*\.txt"

This will do exactly the same thing as your complicated lengthy sed
Learn What to do ,How to do and more importantly When to do ?
Larry Basford
Regular Advisor

Re: sed help

Thanks it was driving us crazy.

The egrep gives me more than I want.

egrep "sgmsg[1a3-9][0-2]*\.txt" file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg10.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:36 sgmsg11.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsg12.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsga2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg1.txt NOT
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg901.txt NOT
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt
Desaster recovery? Right !
Sundar_7
Honored Contributor

Re: sed help

hmm..try this

egrep "sgmsg[1a3-9][0-2]*\.txt$" file.list

Learn What to do ,How to do and more importantly When to do ?
John Poff
Honored Contributor

Re: sed help

Sundar,

Good point. I was able to get 'egrep' to work using the -e options also. The trick is that the expression doesn't need the '*' or else it will match too much. This seems to work:

> egrep -e "sgmsg[1a][0-2].txt" -e "sgmsg[3-9].txt" file.list
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:30 sgmsg10.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:36 sgmsg11.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsg12.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 56 Aug 18 09:41 sgmsga2.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg5.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:08 sgmsg3.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:03 sgmsg6.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:13 sgmsg7.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:18 sgmsg8.txt
-rwx------ 1 BUILTIN OHIO-OMNI_MMSR 54 Aug 18 09:23 sgmsg9.txt

JP
Sundar_7
Honored Contributor

Re: sed help

Hi John,

Yes you are right. * will pick up lot of things. But the above egrep is tailered for the above input :-)

The ? after the expression will eliminate the need for -e and mulitple expressions.

egrep "sgmsg[1a3-9][0-2]?\.txt$" file.list

Sundar.
Learn What to do ,How to do and more importantly When to do ?