Альтернатива, быстрый псевдоним в.bashrc:
echo "alias nano='nano -c -l'" >> ~/.bashrc && source ~/.bashrc && reset
Принудительное использование синтаксиса кажется обязательным для скриптов hashbang, поэтому для принудительного выделения определенной области:
echo "alias nano='nano --syntax=php -c -l'" >> ~/.bashrc && source ~/.bashrc && reset
Есть ряд вопросов:
внутри одинарных кавычек двойные кавычки являются буквальными -, так как вывод вашей команды не содержит "
, он никогда не будет совпадать
если вывод вашей команды имел начальные кавычки, то якорь строки ^
никогда не мог соответствовать после такого символа
возможно, вы тестировали регулярное выражение в движке, поддерживающем модификатор Perl ?
non -greedy -в sed, ?
либо литерал (BRE ), либо простой квантификатор (ERE, как здесь с флагом -E
), где он заставит .*
жадно соответствовать 0 или 1 раз
\s
соответствует только одиночному пробелу; также как и .*?
это строго расширение Perl (хотя последние версии GNU sed поддерживают его)-для переносимости, возможно, вам придется изменить его на[[:blank:]]
|
внутри [...]
не представляет собой чередование (однако это не помешает совпадению выражения, но также будет соответствовать символу |
)
Предполагая, что ваша реализация sed поддерживает \s
и его дополнение \S
, возможно, вы имели в виду что-то вроде
sed -E 's/^(\S+\s+)([A-Za-z].*)/\2/'
хотя можно и проще
sed -E 's/\S+\s+(.*)/\1/'
или даже просто
sed -E 's/\S+\s+//'
, чтобы сопоставить последовательность не -пробелов, за которой следует последовательность пробелов, и удалить ее. Если ваш sed не предоставляет \s
и \S `, вы можете сделать то же самое с классами символов POSIX, как
sed -E 's/[^[:blank:]]+[[:blank:]]+//'
или, если вы ограничены полной последовательностью POSIX (, где +
не является квантифером независимо от режима)
sed 's/[^[:blank:]]\{1,\}[[:blank:]]\{1,\}//'
См. также Почему мое регулярное выражение работает в X, но не в Y?
Найдите ряд пробелов после небелого пробела и измените его на новую строку (, так как ее наверняка не будет ). Затем уберите все до новой строки. Вы только что удалили первое поле.
sed -e 's/\S\s+/\n/;s/.*\n//' file