hello
van egy nagyon egyszerű dolog amit valahogy nem tudok kicsiholni a regexp-el.
még pedig az hogy legalább 4 de max 5 számot tartalmazó sorokat adja vissza.
én így írtam
cat file|grep '[0-9]\{4,5\}'de ez a forma csak azt hozza ahol 4 vagy több számot tartalmazó sor van, azaz van olyan ahol 12 számot is tartalmaz a sor egymás után.
például:
cat old |grep '[0-9]{4,5}'
#97987654
#3443
Innen vettem a formulát: http://en.wikipedia.org/wiki/Regular_expression
BRE: \{m,n\}
ERE: {m,n} Matches the preceding element at least m and not more than n times. For example, a\{3,5\} matches only "aaa", "aaaa", and "aaaaa". This is not found in a few older instances of regular expressions.
A megoldás:
sed -n -e '/[0-9]\{7,7\}/p'
- 7134 megtekintés
Hozzászólások
Toltál bugreportot?
Pl. valami ilyesmit: https://bugs.launchpad.net/ubuntu/+source/grep/+bug/460985
- A hozzászóláshoz be kell jelentkezni
Nem kell bugreport, mert nincs bug. A grep ugye úgy működik, hogy:
1. eldönti, hogy az adott sorra illeszkedik-e a regexp,
2. ha igen, akkor kiírja.
Tehát a regexp, amit írt, azt kérdezi, hogy 12 számjegyben van-e 5 számjegy, és bizony van.
A helyes regexp:
grep -P "(^|[\D])[\d]{4,5}([\D]|$)" file
(^|[\D])
sor eleje, vagy nem számjegy karakter
[\d]{4,5}
adott hosszúságú, számjegyekből álló string
([\D]|$)
sor vége, vagy nem számjegy karakter
Szerk: Bocs, most látom, hogy efel és nagysa már leírta ugyanezt.
- A hozzászóláshoz be kell jelentkezni
grep-pel: cat file | grep -E '(^|[^0-9])[0-9]{4,5}($|[^0-9])'
- A hozzászóláshoz be kell jelentkezni
Vagy ha nem akarsz annyi memóriát foglalni és gépelni :)
grep -E '(^|[^0-9])[0-9]{4,5}($|[^0-9])' filenév
- A hozzászóláshoz be kell jelentkezni
thx
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
Esetleg a grep -w is jó ötlet lehet, ha a fájl "szerkezete" olyan, tehát nem szerepel benne pl. 1234ab karaktersorozat.
- A hozzászóláshoz be kell jelentkezni