Imprimir ou grep linhas que começam da segunda coluna

0

Eu quero imprimir linhas que começam na segunda coluna (a primeira coluna é em branco).

$ cat test.txt

first
 second
  third
   four
 second
    five
      seven

O resultado deve ser:

 second


 second

Quando a linha começa na 7ª coluna, a saída deve ser:

      seven
    
por user2866747 23.04.2014 / 09:37

2 respostas

2

Você pode usar ^\s\S regex:

$ cat test.txt
first
 second
  third
   four
 second
    five
      seven
$ grep "^\s\S" test.txt
 second
 second
  • ^ significa "linha começa com",
  • \s significa "o primeiro caractere é um espaço em branco",
  • \S para "o caractere seguinte não é um espaço em branco.

Dessa forma, você obtém todas as linhas começando com um único espaço em branco.

Se você quiser linhas que começam com n whitespaces, adicione {n} :

$ grep "^\s\{1\}\S" test.txt
 second
 secon d
$ grep "^\s\{2\}\S" test.txt
  third
$ grep "^\s\{3\}\S" test.txt
   four
$ grep "^\s\{4\}\S" test.txt
    five
$ grep "^\s\{5\}\S" test.txt
$ grep "^\s\{6\}\S" test.txt
      seven
    
por 23.04.2014 / 10:52
0

Solução realmente simples para a segunda versão:

 echo "first
 second
  third
   four
 second
    five
      seven" | grep -e '^ ' | grep -ve '^  '

[Editar] - agora trabalhando apenas com o espaçamento no início da linha

    
por 23.04.2014 / 10:54