Como excluo uma linha apenas se estiver no número de linha especificado e corresponder ao padrão? [duplicado]

3

Como excluo uma linha apenas se estiver em um número de linha especificado e ela corresponder ao padrão?

Por exemplo:

  • Eu quero excluir ( d );
  • a terceira linha ( 3 );
  • se estiver em branco ( ^$ );

A seguinte sintaxe:

cat file | sed '3 /^$/d'

Retorna o seguinte erro:

sed: -e expression #1, char 3: unknown command: '/'
    
por user123456 02.10.2016 / 17:42

2 respostas

10

Tente fazer isso:

sed '3{/^$/d;}' file

Observe as chaves.

    
por 02.10.2016 / 17:47
3

Como user000001 respondeu, sed '3{/^$/d;}' file é bom o suficiente, mas só mostrará essa saída. Se você quiser modificar o arquivo, e seu sed é o GNU sed , você pode usar sed -i '3{/^$/d}' file (para GNU sed , o ; antes de } também pode ser omitido aqui).

'-i[SUFFIX]'
'--in-place[=SUFFIX]'
     This option specifies that files are to be edited in-place.  GNU
     'sed' does this by creating a temporary file and sending output to
     this file rather than to the standard output.(1).

Com o FreeBSD / OS / X sed , use sed -i '' '3{/^$/d;}' file .

    
por 02.10.2016 / 17:52

Tags