Sim:
sed 's/0/1/g' "$location_x/file_1" >"$location_y/file2"
Seu código primeiro faz uma cópia do primeiro arquivo e, em seguida, altera a cópia usando a edição sequencial com sed -i
. O código acima lê o arquivo original, faz as alterações e grava o resultado no novo arquivo. Não há necessidade de cat
aqui.
Se você estiver usando o GNU sed
e se o $location_x
puder conter uma entrelinha -
, você precisará garantir que o caminho não seja interpretado como um sinalizador de linha de comando:
sed -e 's/0/1/g' -- "$location_x/file_1" >"$location_y/file2"
O traço duplo marca o final das opções da linha de comando. A alternativa é usar <
para redirecionar o conteúdo do arquivo para sed
. Outras implementações sed
(BSD sed
) param de analisar a linha de comando para opções no primeiro argumento não-opção enquanto o GNU sed
(como algum outro software GNU) reorganiza a linha de comando em sua análise dele.
Para esta operação de edição específica (alterando todos os zeros para uns), o seguinte também funcionará:
tr '0' '1' <"$location_x/file_1" >"$location_y/file2"
Observe que tr
sempre lê a entrada padrão, portanto, o <
para redirecionar a entrada do arquivo original.
Percebo que na linha de comando sed
, você tenta acessar /${location_y}/file2
, que é diferente do caminho na linha acima dele (o /
no início do caminho). Isso pode ser um erro de digitação.