Моя оболочка имеет вызов к 'состоянию' в моем .login файле, для предоставления мне немного сообщения дня. Однако некоторые состояния начинаются с одной ведущей пробельной строки, некоторые начинают два, и у некоторых нет ведущих пробельных строк вообще. Это прослушивает меня.
Я сел к состоянию обертки со своим собственным сценарием оболочки, который удалит весь ведущий пробел из входа, не уничтожая форматирования фактического состояния, которое может намеренно иметь строки пробела.
Это, кажется, не легкая острота двухминутная фиксация, и когда я читал (тростник) через страницы справочника для sed и grep, я полагал, что спрошу наших замечательных покровителей здесь.
Использование того же источника, что и Dav:
# delete all leading blank lines at top of file
sed '/./,$!d'
Источник: http://www.linuxhowtos.org/System/sedoneliner.htm?ref=news.rdf
Дополнительно , вот почему это работает:
Запятая разделяет «диапазон» операции. sed может принимать регулярные выражения для определений диапазонов, поэтому /./
сопоставляет первую строку с «чем угодно» (.
) на ней, а $
указывает конец файл. Следовательно,
/./,$
соответствует «первой непустой строке до конца файла». !
затем инвертирует этот выбор, делая его фактически «пустыми строками в начало файла ". d
удаляет эти строки. # delete all leading blank lines at top of file
sed '/./,$!d'
Источник: http://www.linuxhowtos.org/System/sedoneliner.htm?ref=news.rdf
Просто вставьте в него результат удачи:
fortune | sed '/./,$!d'
Я не уверен, как на самом деле выглядит ваше предсказание, но вот иллюстрация
$ string=" my message of the day"
$ echo $string
my message of the day
$ echo "$string"
my message of the day
, или вы можете использовать awk
echo "${string}" | awk '{gsub(/^ +/,"")}1'