Следующий веб-сайт обеспечивает инструмент, который переведет скидку с цены в HTML:
http://daringfireball.net/projects/markdown/
После того как Вы преобразовываете файл в HTML, существует много инструментов командной строки для использования для просмотра файла. Используя тестовый файл, который содержит форматированный текст скидки с цены, я нашел, что следующее работало приятно.
$ wget http://daringfireball.net/projects/downloads/Markdown_1.0.1.zip
$ unzip Markdown_1.0.1.zip
$ cd Markdown_1.0.1/
$ ./Markdown.pl ~/testfile.markdown | html2text
html2text является одним из многих инструментов, которые можно использовать для просмотра форматированного текста HTML из командной строки. Другая опция, если бы Вы хотите немного более хороший вывод, состояла бы в том, чтобы использовать рысь:
$ ./Markdown.pl ~/testfile.markdown | lynx -stdin
Если Вы - emacs пользователь, кто-то записал режим для скидки с цены, которая доступна здесь: http://jblevins.org/projects/markdown-mode/. Это обеспечивает хорошую подсветку синтаксиса как видно в снимке экрана на том веб-сайте.
Все эти инструменты должны быть доступны для slackware.
Кража идеи Andy и создание его функция, таким образом, легче использовать:
# print the header (the first line of input)
# and then run the specified command on the body (the rest of the input)
# use it in a pipeline, e.g. ps | body grep somepattern
body() {
IFS= read -r header
printf '%s\n' "$header"
"$@"
}
Теперь я могу сделать:
$ ps -o pid,comm | body sort -k2
PID COMMAND
24759 bash
31276 bash
31032 less
31177 less
31020 man
31167 man
...
$ ps -o pid,comm | body grep less
PID COMMAND
31032 less
31177 less
Можно сохранить заголовок наверху как это с ударом:
command | (read -r; printf "%s\n" "$REPLY"; sort)
Или сделайте это с жемчугом:
command | perl -e 'print scalar (<>); print sort { ... } <>'
{}
хорошо вместо ()
?
– jonderry
23.04.2011, 03:57
IFS=
отключает разделение слова при чтении входа. Я не думаю, что это необходимо при чтении в $REPLY
. echo
развернет Escape обратной косой черты если xpg_echo
установлен (не значение по умолчанию); printf
более безопасно в этом случае. echo $REPLY
без кавычек уплотнит пробел; я думаю echo "$REPLY"
должен быть хорошо. read -r
необходим, если вход может содержать Escape обратной косой черты. Часть этого могла бы зависеть от версии удара.
– Andy
23.04.2011, 04:50
read REPLY; echo $REPLY
(полосы, ведущие пробелы) и read; echo $REPLY
(не делает).
– Mikel
23.04.2011, 05:44
xpg_echo
зависит от Вашей системы, например, от Соляриса я думаю это значения по умолчанию к истинному. Поэтому Gilles нравится printf
так: это - единственная вещь с предсказуемым поведением.
– Mikel
23.04.2011, 05:47
Hackish, но эффективный: предварительно ожидать 0
ко всем строкам заголовка и 1
ко всем другим строкам перед сортировкой. Разделите первый символ после сортировки.
… |
awk '{print (NR <= 2 ? "0 " : "1 ") $0}' |
sort -k 1 -k… |
cut -b 3-
Вот некоторый волшебный шум в линии жемчуга, что можно передать вывод по каналу до вида, почти сохраняют первую строку наверху: perl -e 'print scalar <>, sort <>;'
Я нашел хорошую awk версию, которая работает приятно в сценариях:
awk 'NR == 1; NR > 1 {print $0 | "sort -n"}'
sort
команда внешне? Кто-либо знает, по крайней мере, о ссылке на страницу, объясняя использование канала в awk?
– Wildcard
07.11.2015, 03:24
Я пробовал команду | {голова -1; Сортировать; }
и может подтвердить, что действительно все портит. - head
читает несколько строк из конвейера, а затем выводит только первую. Таким образом, остальная часть вывода, которую head
не прочитала , передается в sort
- НЕ остальная часть вывода, начиная со строки 2!
В результате отсутствуют строки (и одна неполная строка!), Которые были в начале вывода вашей команды (за исключением того, что у вас все еще есть первая строка) - факт, который легко подтвердить, добавив вертикальную черту к wc
в конце вышеупомянутого конвейера - но это чрезвычайно сложно отследить, если вы этого не знаете! Я потратил не менее 20 минут, пытаясь понять, почему у меня была неполная строка (первые 100 байт или около того обрезаны) в моем выводе, прежде чем решать ее.
В итоге я сделал, что прекрасно работало и не требовало повторного запуска команды:
myfile=$(mktemp)
whatever command you want to run > $myfile
head -1 $myfile
sed 1d $myfile | sort
rm $myfile
Если вам нужно поместить результат в файл, вы можете изменить его на:
myfile=$(mktemp)
whatever command you want to run > $myfile
head -1 $myfile > outputfile
sed 1d $myfile | sort >> outputfile
rm $myfile
Просто и понятно!
<command> | head -n 1; <command> | sed 1d | sort <....>
Я думаю, это проще всего.
ps -ef | ( head -n 1 ; sort )
или вот это, что возможно быстрее, так как не создается под-оболочка
ps -ef | { head -n 1 ; sort ; }
Другие классные применения
перестановка строк после строки заголовка
cat file.txt | ( head -n 1 ; shuf )
разворот строк после строки заголовка
cat file.txt | ( head -n 1 ; tac )
Я пришел сюда в поисках решения для команды w
. Эта команда показывает подробную информацию о том, кто вошел в систему и что они делают.
Чтобы показать отсортированные результаты, но с заголовками, оставленными наверху (есть 2 строки заголовков), я остановился на:
w | head -n 2; w | tail -n +3 | sort
Очевидно, это запускает команду w
дважды и, следовательно, не может подходить для всех ситуаций. Однако, к его преимуществам, его гораздо легче запомнить.
Обратите внимание, что tail -n +3
означает «показать все строки, начиная с 3-го» (подробности см. В man tail
).
ps -C COMMAND
может быть более соответствующим, чемgrep COMMAND
, но это - просто пример. Кроме того, Вы не можете использовать-C
если Вы также использовали другую опцию выбора такой как-U
. – Mikel 23.04.2011, 03:51body
? Как вbody sort
илиbody grep
. Мысли? – Mikel 23.04.2011, 03:57header
кому:body
, потому что Вы делаете действие с телом. Надо надеяться, это имеет больше смысла. – Mikel 23.04.2011, 04:02body
на всех последующих конвейерных участниках:ps -o pid,comm | body grep less | body sort -k1nr
– bishop 07.11.2016, 22:02<foo body sort -k2
илиbody sort -k2 <foo
. Всего один дополнительный символ от того, что Вы хотели. примечание стороны – Mikel 04.09.2017, 16:49