
次のコマンドを理解できません。このパラメータは-i
「挿入」を意味し、最後のパラメータは明らかに変更されるファイルを参照していることを知っていますが、誰かが2番目のパラメータを説明できますか?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マニュアル]詳細については。