У меня есть это рабочее регулярное выражение (проверено на тренере регулярных выражений):
\n[\s]*[0-9]*[\s]*[0-9]*(\.)?[0-9]*(e\+)?[0-9]*
, которое должно взять первые 2 столбца этого файла
http://wwwhomes.uni -bielefeld.de/achim/highly.txt
Я прочитал справочные страницы, и там написано, что ^ будет совпадать в начале строки, поэтому я заменил \ n на ^, но egrep несоглашаясь со мной, когда я делаю это:
egrep -e ^[\s]*[0-9]*[\s]*[0-9]*(\.)?[0-9]*(e\+)?[0-9]* "wwwhomes.uni-bielefeld.de achim highly.txt"
РЕДАКТИРОВАТЬ: это как-то связано с (e\+)?
РЕДАКТИРОВАТЬ 2: хорошо, я упрощаю регулярное выражение.забудьте о попытке получить числа в научной нотации, вот что я использую:
egrep -e "^[[:space:]]*[0-9]*[[:space:]]*[0-9]*" "wwwhomes.uni-bielefeld.de achim highly.txt"
возвращает строки заголовка:
no number divisors 2 3 5 71113171923293137414347535961677173
------------------------------------------------------------------------------
это не правильно ...
Окончательное редактирование:
Мне понадобилась комбинация grep и sed, чтобы получить правильные данные.grep удалил строки заголовка и отформатировал текст sed
grep -E -o -e "^[[:space:]]+[0-9]+[[:space:]]+[0-9e\+\.]+[[:space:]]+[0-9e\+\.]+" "wwwhomes.uni-bielefeld.de achim highly.txt" >grepped.txt
sed -r "s/^\s*[0-9]+\s*([0-9.e+]+)\s*([0-9.e+]+)/\1,\2/" "grepped.txt" >seded.txt