文字列に一致するシェルスクリプトとコメント行を介してファイルを読み取る

文字列に一致するシェルスクリプトとコメント行を介してファイルを読み取る

シェルスクリプトを介してファイルを読み取り、文字列に一致する行をコメントアウトします。

シェルスクリプトを介して一致するファイル行(final_ip)に注釈を付けたいです。

検索IPがfinal_ipファイルと一致する場合は、入力ファイル(input_ip)があり、以下に示すファイルの内容を変更します。

変更前:

192.168.1.12 #SAM

変更後は一致する行を置き換える必要があります。

# 192.168.1.12 #SAM

答え1

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

/<string>/一致するラインで動作します<string>^行の先頭で操作を実行し、コメント文字を挿入します。

私が理解しているように、ファイルからIPアドレスを読みたいと思います。その後、次のスクリプトを使用できます。使用法: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

スクリプトを移植する必要がない場合は、GNU sedの-iスイッチを使用することもできます。

答え2

これは、GNU sed の -i 拡張子を使用して、Final_ip ファイルをその場で編集します。

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

sedスクリプトの周囲に二重引用符を入れると、$ input変数を補間できます。 input_ipファイルにIPがある場合にのみ有効です。

関連情報