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:
- Abra
Detalhesdo atalho e ativeUsar como Ação Rápida, comFinderselecionado. - No cabeçalho de entrada do atalho, altere o conteúdo aceito para
Arquivose desative os outros tipos. - Adicione a ação
Executar Script do Shell. - Defina
Shellcomo/bin/sh,EntradacomoEntrada do AtalhoePassar Entradacomocomo argumentos. - 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.
- Selecione
notes.txt, pressioneReturn, renomeie-o paranotes.original.txte pressioneReturnnovamente. - Selecione
notes.txt.inserted.txt, pressioneReturn, renomeie-o paranotes.txte pressioneReturnnovamente. - Abra o arquivo recém-renomeado
notes.txte 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
- sed — editor de fluxo — Distribuições de código aberto da Apple
- Entrada e saída do shell — Arquivo da documentação para desenvolvedores da Apple
- Crie um atalho personalizado no Mac — Suporte da Apple
- Execute um atalho enquanto trabalha no Mac — Suporte da Apple
- Limite a entrada de um atalho quando ele é executado a partir de outro app no Mac — Suporte da Apple
- Entenda os tipos de entrada no Atalhos para Mac — Suporte da Apple
- Conheça o Atalhos para macOS — Apple Developer
- Ajustes avançados de privacidade e segurança no Atalhos para Mac — Suporte da Apple
- Sobre as ações de compartilhamento no Atalhos para Mac — Suporte da Apple
- Renomeie arquivos, pastas e discos no Mac — Suporte da Apple