シェルスクリプトを介してファイルを読み取り、文字列に一致する行をコメントアウトします。
シェルスクリプトを介して一致するファイル行(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がある場合にのみ有効です。