Вдвое меньше ведущих пробелов
Jun. 26th, 2013 02:24 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Придумал способ, позволяющий вдвое уменьшить число пробелов в начале строки в текстовом файле:
perl -pi~ -e 's/^( +)\1(?=\S)/$1/' filename.ext
perl -pi~ -e 's/^( +)\1(?=\S)/$1/' filename.ext
no subject
Date: 2013-08-07 11:47 am (UTC)s/^ / /g;
(в первом случае два пробела, во втором - один)
no subject
Date: 2013-08-07 06:39 pm (UTC)s/^ / /g
уменьшает количество пробелов на один, если пробелов больше одного. Только что проверил на perl 5.14.2.Потому и приходится чуть сложнее. Чуть, а не так — там всего-то регулярное выражение немного длиннее :-)
Конечно, в случае ровно с нулём либо двумя пробелами и
s/^ / /g
можно считать допустимым решением, но мне такое решение не нужно.no subject
Date: 2013-08-08 03:35 pm (UTC)Регулярка показалась сложной, т.к. за конструкцией (?= пришлось лезть в perldoc, чтобы понять, что она означает =) Так что я бы сделал более читабельно: s/^( +)\1(\S)/$1$2/. Но тогда в этом посте не было бы никакой изюминки, да? )))