Adiciona um caractere de tabulação ao início de um arquivo sem retorno de linha

0

Uma pergunta muito semelhante provavelmente foi feita muitas vezes, por ex. Como inserir texto antes da primeira linha de um arquivo?

Mas todas essas soluções adicionam uma guia e, em seguida, uma linha retorna ao início do arquivo. Eu quero adicionar apenas uma aba para o início da primeira linha .. como fazer isso?

Muito obrigado

    
por suze1992 12.12.2016 / 05:43

3 respostas

3

Uma maneira de fazer isso, assumindo um shell inteligente o suficiente para saber sobre <(...) construction e um echo inteligente o suficiente para saber o que fazer com as opções -n e -e :

cat <(echo -ne '\t') file

Alternativamente:

( printf '\t'; cat file ) >new_file

Se você precisar fazer isso com sed , supondo que seu sed seja inteligente o suficiente para saber sobre \t :

sed '1s/^/\t/' file

Mas isso é muito mais problemático, dependendo da implementação do seu sed . Também não funciona para arquivos vazios.

    
por 12.12.2016 / 05:52
1

Use ex , que é especificado por POSIX. Adicione uma sequência de nova linha de tabulação no início do arquivo e execute o comando ex join .

Isso funciona quer o arquivo esteja vazio ou não, e deve ser totalmente portátil para qualquer sistema UNIX ou Linux.

(Note que se o arquivo começar como um arquivo vazio, o conteúdo após este comando será um caractere de tabulação e uma nova linha. Na verdade, um arquivo sem uma nova linha de terminação não é realmente um arquivo de texto. )

printf '0a\n\t\n.\n1j!\nx\n' | ex myfile.txt

Se você executar o comando printf sozinho, poderá ver as instruções que estão sendo transmitidas para ex :

$ printf '0a\n\t\n.\n1j!\nx\n'
0a

.
1j!
x

Observe que há um caractere de tabulação única na linha em branco acima.

    
por 12.12.2016 / 06:09
-1
sed '1 s/^/\t/' < textfile.txt
    
por 12.12.2016 / 05:51

Tags