Sida 1 av 1

awk vs sed

Postat: 04 mar 2007, 15:12
av Emil.s
Båda används väl som "grep"? Men mer avancerat...

Men vad är skillnaden? Vilket borde man lära sig?
Känner att "grep" inte riktigt räcker alla gånger :P

SV: awk vs sed

Postat: 04 mar 2007, 16:35
av mcNisse
Jag vill säga att bägge går att använda som grep. Sed har inga variabler och kan modifirera texten mha reguljära uttryck. awk är mer avancerat och har variabler och funktioner.

Jag tycker att bägge är värt att lära sig. Programmen komletterar varandra bra. Svårigheten med bägge är att lära sig reguljära uttryck.

Personligen använder jag sed när jag ska byta ut text i filer och awk när jag vill omstrukturera filer/resultat av vissa program. Eller för att beräkna förekomster av vissa ord i filer.

SV: awk vs sed

Postat: 04 mar 2007, 16:51
av Emil.s
Några användningsområden jag tänkt mig är tex:

Kod: Markera allt

eth0      Link encap:Ethernet  HWaddr 00:30:05:69:01:45  
          inet addr:10.0.0.5  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:77373183 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78896861 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2786693131 (2.5 GiB)  TX bytes:1436195710 (1.3 GiB)
          Interrupt:16 Base address:0x3000
Här skulle jag tilja ha ut tex enbart IP adressen. (10.0.0.5)

Kod: Markera allt

Mar  1 13:03:13 servern sshd[14365]: Accepted password for emil from 10.0.0.1 port 52486 ssh2
Mar  1 13:03:13 servern sshd[14369]: (pam_unix) session opened for user emil by (uid=0)
Mar  1 16:21:46 servern sshd[14438]: Accepted password for emil from 10.0.0.1 port 49172 ssh2
Mar  1 16:21:46 servern sshd[14442]: (pam_unix) session opened for user emil by (uid=0)
Mar  1 16:21:46 servern sshd[14442]: subsystem request for sftp
Mar  1 16:22:53 servern sshd[14444]: Accepted publickey for emil from 10.0.0.9 port 49174 ssh2
Av detta an lista som typ:
"emil" loggade in från x.x.x.x Mar  1 16:22:53

Vad skulle ni använda för det?

SV: awk vs sed

Postat: 04 mar 2007, 18:36
av johanre
Emil.s skrev: Några användningsområden jag tänkt mig är tex:

Kod: Markera allt

eth0      Link encap:Ethernet  HWaddr 00:30:05:69:01:45  
          inet addr:10.0.0.5  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:77373183 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78896861 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2786693131 (2.5 GiB)  TX bytes:1436195710 (1.3 GiB)
          Interrupt:16 Base address:0x3000
Här skulle jag tilja ha ut tex enbart IP adressen. (10.0.0.5)
http://ubuntu-se.org/smf/index.php/topi ... l#msg24343 & http://ubuntu-se.org/smf/index.php/topi ... l#msg26683
Emil.s skrev:

Kod: Markera allt

Mar  1 13:03:13 servern sshd[14365]: Accepted password for emil from 10.0.0.1 port 52486 ssh2
Mar  1 13:03:13 servern sshd[14369]: (pam_unix) session opened for user emil by (uid=0)
Mar  1 16:21:46 servern sshd[14438]: Accepted password for emil from 10.0.0.1 port 49172 ssh2
Mar  1 16:21:46 servern sshd[14442]: (pam_unix) session opened for user emil by (uid=0)
Mar  1 16:21:46 servern sshd[14442]: subsystem request for sftp
Mar  1 16:22:53 servern sshd[14444]: Accepted publickey for emil from 10.0.0.9 port 49174 ssh2
Av detta an lista som typ:
"emil" loggade in från x.x.x.x Mar  1 16:22:53

Vad skulle ni använda för det?
Python ...  ;)  Men visst, awk skulle lämpa sig utmärkt för det.

SV: awk vs sed

Postat: 04 mar 2007, 20:57
av Emil.s
Även detta funkar bra för IP'n:
`/sbin/ifconfig eth0 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`

Så man kan nog använda det man själv gillar...  :P

SV: awk vs sed

Postat: 07 apr 2007, 14:40
av marwal
Den stora skillnaden kommer när man ska använda sig av kommandon från BASH. Då är enklare att använda sed. awk vill gärna krångla med quotes  och kräver en del speciallösningar.
Man ska heller inte glömma cut och tr som i många fall kan ersätta krångligare sed eller awk kommandon.

Jag har täckt awk, sed, cut, tr, grep, cat en del i artiklarna :
Textbehandling
Bokstavspar frekvens
på min hemsida.