다음 명령을 이해할 수 없습니다. 이 매개변수는 -i
"삽입"을 의미하고 마지막 매개변수는 분명히 변경될 파일을 참조한다는 것을 알고 있지만 누군가 두 번째 매개변수를 설명할 수 있습니까?s/ quiet init=.*$//
sed -i 's/ quiet init=.*$//' /boot/cmdline.txt
파일은 /boot/cmdline.txt
다음과 같습니다.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
답변1
-i
GNU의 경우 sed
이는 실제로 "삽입"이 아닌 파일을 수정하는 것을 의미합니다.
나머지는 sed 스크립트입니다 s
. 즉, 교체를 수행할 것이며 첫 번째 스크립트는 /
다음 스크립트까지 정규식의 시작을 표시합니다 /
. 따라서 이 경우 패턴은 quiet init=.*$
문자열 quiet init=
과 거기에서 모든 항목을 찾습니다. 줄 끝. 다음 부분은 표현식과 일치하는 항목을 바꾸는 것입니다. 우리의 경우에는 빈 문자열이므로 줄의 해당 부분을 효과적으로 제거합니다.
답변2
sed 명령줄 옵션과 sed 명령 자체를 혼동하고 있는 것 같습니다.
옵션은 기본 동작을 수정 sed
하고 sed 명령으로 수행할 작업을 결정합니다 sed
.
-i
귀하의 경우에는 내부 편집입니다. 즉, 문제의 파일에 변경 사항을 영구적으로 기록하므로 파일을 변경하는 것입니다.
i
원하는 위치에 줄을 삽입하는 명령 과 혼동하지 마십시오 . 예를 들어
sed -i '1,i\header' file # i inside single quotes is command
header
파일의 첫 번째 줄에 이 줄을 추가합니다 .
귀하의 경우 s
대체 명령이며 일반적인 형식은 다음과 같습니다.
s/pattern/substition/flag
바라보다[sed 매뉴얼]자세한 내용은.