Muitas maneiras:
-
grep
com PCRE (-P
):grep -Po '^[^\s]+\s+\K.*' file.txt
-
^[^\s]+\s+
corresponde ao primeiro campo junto com espaço em branco à direita,\K
descarta a correspondência e, em seguida,.*
corresponde ao restante da linha e é impresso
-
-
sed
:sed -E 's/^[^[:blank:]]+[[:blank:]]+//' file.txt
-
^[^[:blank:]]+[[:blank:]]+
corresponde ao primeiro campo, novamente com o (s) espaço (s) em branco à direita e é substituído por uma string vazia
-
-
awk
:awk -F "[[:blank:]]+" '{$1=""; print substr($0, 2)}' file.txt
-
-F "[[:blank:]]+"
define o separador de campo como um ou mais espaços em branco,$1=""
define o primeiro campo como string vazia, isso introduz um espaço em branco na frente, então precisamos fazer o fatiamento de string com substr ($ 0, 2) 'para obter caracteres a partir do segundo
-
-
cut
:cut -d" " -f2- file.txt
-
-d" "
define o delimitador como espaço e-f2-
imprime os campos a partir do segundo
-
-
bash
:while read -r _ desired; do echo "$desired"; done <file.txt
- Ler cada linha e definir o primeiro campo como variável de distribuição
_
,desired
contém a parte restante e é impresso emecho "$desired"
- Ler cada linha e definir o primeiro campo como variável de distribuição
-
perl
:perl -pe 's/^[^\s]+\s+//' file.txt
- Lógica semelhante ao
sed
one
- Lógica semelhante ao
-
python
:#!/usr/bin/env python with open('file.txt') as f: for line in f: print line.split(' ', 1)[1]
- Ler cada linha e
line.split(' ', 1)
irásplit
no espaço com um máximo de1
operação de divisão, portanto o índice 0 conterá a primeira palavra e o índice 1 terá a parte desejada (ou seja, da segunda palavra até fim)
- Ler cada linha e