- 1
sed '/^[:space:]*$/d'
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−130
sed '/^[:space:]*$/d'
Проблема была: помимо пустых строк код ВНЕЗАПНО удалял строчки, состоящие из слова "as" (через этот код проходят SQL-скрипты).
Анонимус 23.07.2010 21:36 # −3
хотя нет, кажется попал пальцем в лужу: там же начало и конец ограничены. Так каким образом в [:space:] попало as?
checkist 23.07.2010 21:40 # +4
Анонимус 23.07.2010 21:47 # +1
я бы \s написал
checkist 23.07.2010 21:59 # 0
nil 23.07.2010 22:22 # 0
Altravert 23.07.2010 23:30 # 0
nil 24.07.2010 00:14 # +1
Это же чистые PCRE, но много где сперты, в питоне, как мне помнится, как раз они используются, да. Я, впрочем, питон только на уровне конфигурирования cvs2svn знаю:)
А PCRE, вообще, придумали демоны красноглазые, для того, чтобы окончательно запутать и так непростую нотацию!:)
checkist 24.07.2010 10:20 # 0
nil 24.07.2010 10:37 # 0
http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap05.html#tagtcjh_2
checkist 26.07.2010 09:51 # 0
Но \s в sed работает корректно :)
nil 26.07.2010 10:04 # +1
И меня расстраивает, что я не могу понять, почему:)
Есть идея... Удаляются только строчки вида /^$/, или строчки /^ $/ тоже удалятся?
checkist 26.07.2010 10:36 # 0
nil 26.07.2010 10:53 # +1
Покурил еще стандарт, где сказано:
The interpretation of an ordinary character preceded by a backslash ( '\' ) is undefined, except for:
* The characters ')', '(', '{', and '}'
* The digits 1 to 9 inclusive (see BREs Matching Multiple Characters)
* A character inside a bracket expression
В стандарте на sed не сказано ничего про дополнения к BRE, кроме \n.
В гнусном sed сказано про \w, \W, \b, \B.
Вот еще ресурс: http://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq6_008.html
Тоже, упоминается только в sedmod каком-то.
Короче, гнусная недокументированная фича!
checkist 26.07.2010 10:55 # 0
nil 26.07.2010 11:10 # +1
И портабельнее. Кстати, о портабельности и в гнусном мануале сказано, что точно портабельны будут только \n и \\.
3.14159265 26.07.2010 09:39 # 0