/ / Jak symulować egrep za pomocą innych poleceń? - linux, bash, awk, grep

Jak symulować egrep za pomocą innych poleceń? - linux, bash, awk, grep

Muszę symulować egrep plus kilka opcji z innymi poleceniami, głównie awk, ale naprawdę nie rozumiem, jak to zrobić w skrypcie. Wiem to awk rozpoznaje wyrażenia regularne, ale może je zastąpić egrep?

Naprawdę nie wiem od czego zacząć.

Odpowiedzi:

3 dla odpowiedzi № 1

Używany przykładowy plik:

[jaypal:~/Temp] cat file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
LastLine

Symulacja:

1. egrep -n

[jaypal:~/Temp] egrep -n "LastLine" file
6:LastLine
[jaypal:~/Temp] awk /LastLine/"{print NR":"$0}" file
6:LastLine

2. egrep -v

[jaypal:~/Temp] egrep -v "LastLine" file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
[jaypal:~/Temp] awk "/LastLine/{next}1" file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine

lub (jak wskazał Dennis w komentarzach)

[jaypal:~/Temp] awk "!/LastLine/" file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine

3. egrep -i (To jest tylko w gnu awk)

[jaypal:~/Temp] egrep -i "lastline" file
LastLine
[jaypal:~/Temp] gawk -v IGNORECASE=1 "/lastline/" file
LastLine

4. egrep -w (To jest tylko w gnu awk)

[jaypal:~/Temp] egrep -w "is" file
This is FirstLine
[jaypal:~/Temp] gawk "/<is>/" file
This is FirstLine

5. egrep -f

[jaypal:~/Temp] cat file
This is FirstLine
SecondLineEEE
AAAblablabla
ForthLineEEE
FifthLine
LastLine

[jaypal:~/Temp] cat patternfile
LastLine
is

[jaypal:~/Temp] egrep -f patternfile file
This is FirstLine
LastLine

[jaypal:~/Temp] awk "NR==FNR{a[$0]++;next} {for (x in a) if ($0~x) print $0}" patternfile file
This is FirstLine
LastLine