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 № 1Uż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