1. Como imprimir a coluna tty de ps
com sed
?
ps | sed 's/ *[^ ]* *\([^ ]*\).*//'
Explicações
Usarei ␣
para o caractere de espaço.
-
s/A/B/
-s
ubstituteA
porB
uma vez por linha -
␣*
- 0 ou mais espaços -
[^␣]*
- 0 ou mais caracteres que não são (^
) um espaço -
\(…\)
- um grupo, tudo dentro dos colchetes com escape é salvo como, pois é o primeiro grupo aqui
-
.*
- 0 ou mais ocorrências de qualquer caractere, exceto nova linha -
- chama o grupo antes de salvo
Formas alternativas
ps -o tt
ps | awk '{print $2}'
2. Como substituir a linha TTY por “terminal”?
ps | sed '2,$s/\([^0-9 ][^ ]*\)/terminal/'
Explicações
-
2,$
- processa cada linha do segundo para o último (então, deixe a primeira linha de fora) - Eu assumi que você quer que o títuloTTY
permaneça, se não omitir isso. -
[^0-9␣]
- qualquer caractere, exceto um destes:0123456789␣
-
terminal
- a stringterminal
Forma alternativa
ps | sed '2,$s/\([0-9 ]*\)[^ ]*/terminal/'
ps | awk '{$2="terminal";print}' # change every line
ps | awk '{if(NR>1){$2="terminal"};print}' # omit first line