쉘 스크립트를 통해 파일을 읽고 문자열과 일치하는 행을 주석 처리합니다.
쉘 스크립트를 통해 일치하는 파일 라인(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가 있는 경우에만 유효합니다.