Para inserir texto em uma linha específica de um arquivo de texto existente no Mac, use uma ação de shell do Atalhos para criar uma cópia editada, inspecione-a e, em seguida, renomeie-a no Finder. Este passo a passo insere uma linha antes da linha 3 usando um exemplo descartável.

A tarefa aqui é adicionar uma linha a um pequeno arquivo de texto simples local, mantendo as linhas ao redor na ordem. Você vai criar um atalho do Finder que aceita exatamente um arquivo. O texto a inserir e o número da linha ficam no script, facilitando repetir a mesma edição em cópias descartáveis.

O que significa “inserir na linha 3”?

Neste artigo, inserir significa colocar o novo texto antes da linha numerada existente. Com três linhas originais, inserir Birch antes da linha 3 resulta em quatro linhas:

Posição Arquivo original Arquivo editado
1 Cedar Cedar
2 Maple Maple
3 Willow Birch
4 — Willow

Uma linha é um registro delimitado por nova linha, não uma linha criada pela quebra visual no editor. Linhas em branco contam. O exemplo usa texto simples UTF-8 comum com finais de linha LF e uma nova linha após a última linha. Mantenha essas condições neste exercício; documentos de texto formatado e arquivos com outras codificações ou finais de linha exigem um plano diferente.

O comando que faz a edição é o sed do macOS. Seus endereços numéricos contam as linhas a partir de 1, e o comando i escreve o texto de inserção antes da linha indicada. Normalmente, ele grava o conteúdo transformado na saída padrão. Esses comportamentos documentados permitem que o atalho crie um arquivo de resultado separado. Manual do sed distribuído pela Apple

Crie um arquivo de texto descartável

Abra o Terminal e cole este bloco completo de configuração. Ele cria uma pasta chamada Line Insert Demo na Mesa e um arquivo de três linhas chamado notes.txt. Se esse nome de pasta já existir, a configuração será interrompida; escolha um nome de pasta novo antes de tentar novamente.

/bin/sh <<'SH'
set -e
demo_dir="$HOME/Desktop/Line Insert Demo"
/bin/mkdir "$demo_dir"
printf '%s\n' 'Cedar' 'Maple' 'Willow' > "$demo_dir/notes.txt"
printf 'Created: %s\n' "$demo_dir/notes.txt"
SH

A criação da pasta omite deliberadamente a opção que permite usar um diretório existente. A etapa de gravação do arquivo só é executada depois que uma nova pasta é criada, então esta configuração não substitui um exemplo anterior. A documentação de shell da Apple explica como usar printf e o redirecionamento de saída para criar arquivos de texto. Entrada e saída do shell

Mantenha este exercício dentro dessa pasta descartável. No Finder, abra a Mesa e localize Line Insert Demo; você selecionará o arquivo notes.txt depois de criar o atalho.

Crie um atalho do Finder com o tipo de entrada correto

Crie no Atalhos um atalho chamado Insert Birch Before Line 3. A Apple documenta como criar um atalho usando o botão Adicionar da barra de ferramentas, dar um nome a ele e adicionar ações pela barra lateral. Crie um atalho personalizado no Mac

Configure-o da seguinte maneira:

  1. Abra Detalhes do atalho e ative Usar como Ação Rápida, com Finder selecionado.
  2. No cabeçalho de entrada do atalho, altere o conteúdo aceito para Arquivos e desative os outros tipos.
  3. Adicione a ação Executar Script do Shell.
  4. Defina Shell como /bin/sh, Entrada como Entrada do Atalho e Passar Entrada como como argumentos.
  5. Substitua o script de exemplo da ação pelo programa completo da próxima seção.

A Apple documenta como ativar atalhos do Finder e limitar os tipos de entrada aceitos. O tipo Arquivos inclui muitos tipos de documentos, então essa configuração disponibiliza arquivos para o atalho; ela não valida o formato do texto. O script adiciona verificações mais específicas. Execute um atalho enquanto trabalha no Mac, Limite a entrada de um atalho, Entenda os tipos de entrada

A cadeia de entrada é importante: o Finder fornece um arquivo ao Atalhos, e a ação de shell passa o caminho como argumento, disponível no script como $1. Não coloque uma ação de leitura de texto antes da ação de shell: este programa precisa do caminho do arquivo para ler o arquivo existente e escolher um nome de saída próximo.

A Apple confirma que o Atalhos para Mac permite executar scripts de shell diretamente no editor. Se a execução de scripts estiver desativada, escolha Atalhos > Ajustes, abra Avançado e ative Permitir a execução de scripts. Conheça o Atalhos para macOS, Ajustes avançados do Atalhos

Insira a linha e crie um resultado separado

Cole este programa completo em Executar Script do Shell. Ele exige um único arquivo regular existente, insere Birch antes da linha 3 e grava um arquivo próximo cujo nome é formado pela adição de .inserted.txt ao caminho de origem.

#!/bin/sh
set -eu

fail() {
    printf '%s\n' "$1" >&2
    exit 1
}

[ "$#" -eq 1 ] || fail 'Select exactly one example text file.'
file=$1
line=3

case "$file" in
    /*) ;;
    *) fail 'The input must be an absolute file path.' ;;
esac

[ -f "$file" ] || fail 'The input file does not exist or is not a regular file.'
[ ! -L "$file" ] || fail 'Select the example file itself, not a symbolic link.'
[ -r "$file" ] || fail 'The input file cannot be read.'

count=$(/usr/bin/sed -n '$=' "$file") || fail 'Could not count the input lines.'
[ -n "$count" ] || fail 'The input file is empty.'
[ "$line" -le "$count" ] || fail 'The insertion line is beyond the end of the file.'

output="${file}.inserted.txt"
if [ -e "$output" ] || [ -L "$output" ]; then
    fail 'The output name already exists. Inspect or rename that result first.'
fi

if (
    set -C
    /usr/bin/sed "${line}i\\
Birch
" "$file" > "$output"
); then
    printf 'Created edited copy: %s\n' "$output"
else
    fail 'Could not finish the edited copy. Inspect any partial output before retrying.'
fi

As quebras de linha físicas dentro da expressão sed são intencionais. Mantenha a barra invertida após i, a quebra de linha seguinte e o texto inserido em sua própria linha. A estrutura do comando segue o manual distribuído pela Apple; ela evita depender de uma forma compacta de inserção copiada de outra implementação de sed. Manual do sed: comandos e texto de inserção

As verificações ao redor são as regras de decisão do fluxo de trabalho. Inserir antes de uma linha numerada exige que essa linha exista. Por isso, o programa rejeita um arquivo vazio e um alvo além da última linha. Também recusa um nome de saída existente, enquanto o modo noclobber do shell oferece outra verificação ao abrir o arquivo de saída.

O script lê o original e grava um arquivo separado. Se a gravação falhar, o original continua disponível, mas pode restar um arquivo de saída incompleto. Trate um erro como uma operação não concluída e inspecione esse arquivo de saída antes de removê-lo ou tentar novamente. Execute apenas uma instância por vez e não altere a origem durante a operação.

A saída da ação é uma mensagem de status de texto contendo um caminho, não um objeto de arquivo do Atalhos. O arquivo editado é criado pelo redirecionamento do script. Adicionar Salvar Arquivo depois disso salvaria a saída da ação em vez de realizar a inserção de linha pretendida. A Apple documenta Salvar Arquivo como uma ação de compartilhamento para gerenciamento de arquivos; a documentação não a descreve como um editor de linhas numeradas. Sobre as ações de compartilhamento no Atalhos para Mac

Execute, inspecione o resultado e mantenha o nome original do arquivo

No Finder, clique com a tecla Control pressionada no arquivo descartável notes.txt e escolha Ações Rápidas e depois Insert Birch Before Line 3. A Apple documenta essa forma de execução. Se o atalho não aparecer, verifique se o Finder está ativado nos detalhes e se as entradas aceitas incluem Arquivos. Execute um atalho enquanto trabalha no Mac

Após uma execução bem-sucedida, a pasta de demonstração contém notes.txt e notes.txt.inserted.txt. Abra o segundo e confira se o conteúdo é exatamente:

Cedar
Maple
Birch
Willow

Você também pode inspecionar o resultado no Terminal com este comando completo:

/bin/cat "$HOME/Desktop/Line Insert Demo/notes.txt.inserted.txt"

Para colocar o conteúdo editado no caminho original, feche os documentos de exemplo e faça estas duas renomeações no Finder. Primeiro, confirme que notes.original.txt não está em uso; se existir, escolha outro nome de backup que esteja livre.

  1. Selecione notes.txt, pressione Return, renomeie-o para notes.original.txt e pressione Return novamente.
  2. Selecione notes.txt.inserted.txt, pressione Return, renomeie-o para notes.txt e pressione Return novamente.
  3. Abra o arquivo recém-renomeado notes.txt e verifique as quatro linhas.

A Apple documenta como selecionar um item e pressionar Return para renomeá-lo. Preserve a extensão final .txt em ambos os nomes. Se o Finder informar que o nome já está em uso, pare e inspecione o item existente antes de escolher um nome disponível. Renomeie arquivos, pastas e discos no Mac

Ao final, o conteúdo editado estará em notes.txt e o conteúdo original em notes.original.txt. Isso substitui o arquivo que ocupa o caminho original; não preserva a identidade do arquivo original nem garante a transferência de etiquetas do Finder, atributos estendidos ou outros metadados.

Ajuste a inserção sem mudar seu significado

Para outro arquivo descartável, altere line=3 para o número de uma linha existente e substitua Birch por um texto simples de uma única linha. Mantenha intacta a sintaxe de inserção exibida. O texto de exemplo não contém intencionalmente aspas, cifrões, crases ou barras invertidas; textos arbitrários exigem regras adicionais de aspas do shell e de sed.

Use esta tabela de decisão antes de editar o script:

Alteração pretendida O que fazer
Colocar texto antes da primeira linha Defina line=1 em um arquivo de exemplo não vazio.
Colocar texto antes de outra linha existente Defina line como o número positivo dessa linha.
Adicionar texto depois da última linha Use uma operação de acréscimo separada; este programa rejeita uma linha de destino inexistente.
Inserir em um arquivo vazio Crie o conteúdo inicial separadamente; não há uma linha existente que possa ser indicada.
Executar o mesmo atalho duas vezes Inspecione primeiro a saída anterior. Depois de substituir o original, uma nova execução insere outra cópia do texto.

Para esta tarefa no computador, os pontos de verificação úteis são o arquivo selecionado, a posição de inserção, o resultado concluído e o nome final do arquivo. Quando o exemplo de quatro linhas estiver correto, a mesma sequência oferece uma forma clara de testar outra inserção simples, mantendo o texto inicial disponível.

Fontes