다음 내용이 포함된 파일이 있습니다.
10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy
bc group
이 파일의 내용을 호스트 파일의 행 다음에 호스트 파일에 삽입해야 합니다 .
서버의 호스트 파일에는 이미 수백 개의 항목이 있습니다. Bc는 호스트 파일의 그룹입니다. 위 파일에서 IP 주소와 호스트 이름을 읽고 해당 항목을 호스트 파일 헤더 아래에 넣는 코드가 필요합니다 bc group
.
위의 새 파일은 호스트 파일의 키워드 뒤에 작성되어야 합니다 bc group
.
예를 들어 내 호스트 파일에 다음 줄이 포함되어 있는 경우:
10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.63.71.136 bc2
10.63.71.214 bc3
호스트 파일을 다음으로 변환해야 합니다.
10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy
10.63.71.136 bc2
10.63.71.214 bc3
첫 번째 파일의 모든 줄을 bc group
호스트 파일의 줄에 추가한 다음 호스트 파일의 나머지 줄을 계속 추가해야 합니다.
답변1
이 시도:
sed '/^bc group$/ r file1' hostfile
이 sed
명령은 의 줄을 hostfile
출력에 복사하고 file1
의 모든 줄 다음 줄을 읽습니다(삽입).bc group
hostfile
출력을 다른 파일에 저장하려면 > newhostfile
다음 명령에 추가하십시오.
sed '/^bc group$/ r file1' hostfile > newhostfile
그러나 나는 이 방법을 권장합니다. 즉, 백업에 접미사를 사용 .bak
하고 파일을 제자리에서 편집하는 것입니다.
sed -i.bak '/^bc group$/ r file1' hostfile
행 bc group
이 에 여러 번 나타나면 hostfile
행이 file1
여러 번 삽입됩니다.
답변2
다음과 같은 것이 필요한 것 같습니다.
INPUT_FILE='/path/to/file'
GROUP_NAME='# bc group'
HOSTS_FILE='/etc/hosts'
echo "$GROUP_NAME" >> "$HOSTS_FILE"
while read line; do
echo "$line" >> "$HOSTS_FILE"
done < "$INPUT_FILE"
스크립트는 먼저 $HOSTS_FILE
귀하의 스크립트 뒤에 추가(주석 처리)됩니다 $GROUP_NAME
. 그런 다음 입력 파일의 각 줄을 반복하여 그룹 이름 아래의 호스트 파일에 추가합니다.