Очистка консоли Shell

Возможно, что-то вроде этого:

$ cat t.awk
NR==1 {
    for (i=1; i<=NF; i++) {
        ix[$i] = i
    }
}
NR>1 {
    print $ix[c1], $ix[c2]
}
$ awk -f t.awk c1=id c2=name input 
1 ed
2 joe
$ awk -f t.awk c1=age c2=name input 
50 ed
70 joe

Если Вы хотите указать столбцы для печати на командной строке, Вы могли бы сделать что-то вроде этого:

$ cat t.awk 
BEGIN {
    split(cols,out,",")
}
NR==1 {
    for (i=1; i<=NF; i++)
        ix[$i] = i
}
NR>1 {
    for (i in out)
        printf "%s%s", $ix[out[i]], OFS
    print ""
}
$ awk -f t.awk -v cols=name,age,id,name,id input 
ed 1 ed 50 1 
joe 2 joe 70 2 

(Отметьте -v переключатель для определения переменной в BEGIN блок.)

8
31.03.2011, 21:25
3 ответа

reset

команда, которая является частью ncurses и расположена в пакете ncurses-мусорного-ведра на Debian, будет абсолютно ясный консоль. Это то, что Вы хотите?

Краткий обзор reset из страницы справочника:

приготовленные наборы сброса и режимы эха, выключают cbreak и режимы без предварительной обработки, включают перевод новой строки и сбрасывают любые специальные символы сброса к их значениям по умолчанию прежде, чем сделать терминальную инициализацию тот же путь как tset.

Как обсуждено в https://superuser.com/questions/122911/bash-reset-and-clear-commands, и, как указано Erik в очистке консоли Shell, clear просто очистит экран, reset будет (как bignose выразился), "сбросьте свой терминал, когда он испорчен управляющими последовательностями". Лично, я способен портить свой терминал, и когда я очищаю его, я не надеюсь получать что-либо назад, которое было там прежде, таким образом, я просто использую reset. Но ymmv.

13
27.01.2020, 20:08
  • 1
    Как это отличается от Ctrl+L в целях этого вопроса? Пользователь не упоминал терминальное повреждение, и иначе это эквивалентно насколько я вижу. –  Mikel 01.04.2011, 03:17
  • 2
    @Mikel я попробовал Ctrl+L но это не очистило терминал. –  sawa 01.04.2011, 04:10

Я обычно просто использую:

clear

От clear страница справочника:

clear clears your screen if this is possible.  It looks in the environ-
ment for the terminal type and then in the terminfo database to  figure
out how to clear the screen.

clear ignores any command-line parameters that may be present.
8
27.01.2020, 20:08
  • 1
    я попробовал его, но это не очищает терминал. –  sawa 01.04.2011, 04:10
  • 2
    @sawa: можно ли предоставить снимок экрана? Я все еще не могу понять от Вашего вопроса почему clear или Ctrl+L не работать. –  Mikel 01.04.2011, 04:58
  • 3
    @Mikel Это просто не работает. Строка прокручивается, и курсор в первой видимой строке, но полоса прокрутки расположена внизу. –  sawa 01.04.2011, 05:04
  • 4
    @sawa: А-ч, я вижу то, что Вы имеете в виду! Я использовал PuTTY, и это было то же, но в Терминале Gnome существует различие. Спасибо за объяснение. –  Mikel 01.04.2011, 05:10

Это не ответ на Ваш вопрос, но можно использовать меньше и поддержать цвет, см.: https://serverfault.com/questions/26509/colors-in-bash-after-piping-through-less

подсказка:

$ grep --color=always foo bar.txt | less -r
5
27.01.2020, 20:08

Теги

Похожие вопросы