3

カーネル パラメータをまだ含んでいない行に追加する必要があります。(既に存在する場合に備えて、すべての行に追加したくありません。)

バッファ内で実行するためにこのawkコマンドを作成しましたが、awk にはsed. (ただし、このタイプの一致を で行う方法がわかりませんsed。)

awk '/\tkernel/&&!/audit=1/ { print $0" audit=1"; }' /etc/grub.conf

これは、「kernel」に一致し、「audit=1」に一致しない行を探します(必要に応じて「audit=1」を追加します)。

sed/awk としてタグ付けされていますが、他の提案も受け付けています。

4

2 に答える 2

3

sed の使用:

sed -i '/kernel/{/audit=1/!s/$/ audit=1/}' /etc/grub.conf
于 2013-01-03T02:22:28.983 に答える
3

のインプレイス編集機能はsed、サフィックスのない一時ファイルを使用して、既存のファイルを置き換えます。たとえば、次のようになります。

sed -i '/\tkernel/ { /audit=1/!s/$/ audit=1/ }' /etc/grub.conf

これと同じです:

sed '/\tkernel/ { /audit=1/!s/$/ audit=1/ }' /etc/grub.conf > tmp && mv tmp /etc/grub.conf

フラグは-i、プロセスをシュガー コーティングするだけです。したがって、同じロジックをawkコマンドに簡単に適用できます。

awk '/\tkernel/ && !/audit=1/ { print $0, "audit=1"; next }1' /etc/grub.conf > tmp && mv tmp /etc/grub.conf
于 2013-01-03T02:40:18.307 に答える