Leia um arquivo e comente uma linha que corresponda a uma string via shell script

1

Leia um arquivo e comente uma linha que corresponda a uma string por meio do shell script

Eu quero comentar uma linha de arquivo correspondente (final_ip) via script de shell

Eu tenho um arquivo de entrada (input_ip) se a busca ip está combinando no arquivo final_ip, altere o conteúdo do arquivo mencionado abaixo

Antes de mudar:

192.168.1.12 #SAM

Após a alteração, a linha correspondente deve estar substituindo:

# 192.168.1.12 #SAM
    
por Amal P Ramesh 29.10.2015 / 14:05

2 respostas

2

sed '/<string>/s/^/<comment_char>/' <file>

/<string>/ opera nas linhas correspondentes a <string> . ^ opera no começo da linha e insere o caractere de comentário.

Pelo que entendi, você quer ler o endereço IP de um arquivo. Então você pode usar o seguinte script. Uso: script <file_containing_the_IP_address> <file_to_operate_on>

#!/bin/sh

ip_file="$1"
file_to_change="$2"
comment='# '

ip=$(sed 's/\./\./g' "$ip_file")
temp_file=$(mktemp)

sed "/$ip/s/^/$comment/" "$file_to_change" > "$temp_file" &&
    mv -- "$temp_file" "$file_to_change"

exit 0

Se o script não precisar ser portátil, você também pode usar a opção -i do GNU sed.

    
por 29.10.2015 / 14:14
0

Isso usa a extensão -i do GNU sed para editar o arquivo final_ip no local:

input='cat input_ip'
sed -i "s/$input/# $input/" final_ip

Colocar aspas duplas em torno do script de sed permite que a variável $ input seja interpolada. Só funciona se houver um IP no arquivo input_ip.

    
por 29.10.2015 / 14:58