문자열과 일치하는 쉘 스크립트 및 주석 행을 통해 파일 읽기

문자열과 일치하는 쉘 스크립트 및 주석 행을 통해 파일 읽기

쉘 스크립트를 통해 파일을 읽고 문자열과 일치하는 행을 주석 처리합니다.

쉘 스크립트를 통해 일치하는 파일 라인(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가 있는 경우에만 유효합니다.

관련 정보