プロファイル変数から100以外の変数を削除する方法

プロファイル変数から100以外の変数を削除する方法

構成ファイルから変数を削除する方法hadoop.tasklog.totalLogFileSize100と等しくない

はい

more file.conf

hadoop.tasklog.totalLogFileSize=107
hadoop.tasklog.totalLogFileSize=10
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.totalLogFileSize=189
hadoop.tasklog.totalLogFileSize=104
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12
.
.

期待される出力

more file.conf

hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12
.
.

答え1

$ awk -F= '/hadoop\.tasklog\.totalLogFileSize/ && $2 != 100 { next } 1' file
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12

これはファイルを=-で区切られたフィールドとして扱います。行が指定されたパターンと一致し、次の数字=(つまり、2番目のフィールド)が100以外の場合、その行はスキップされ、出力は生成されません。他のすべての行は、1プログラムの最後の末尾の行によって出力されます(で置き換え可能{ print })。

使用sed:

$ sed '/hadoop\.tasklog\.totalLogFileSize/{ /=100$/!d; }' file
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12

これはすべてのラインを出力しますが、ラインが与えられたパターンと一致した場合に実行されます。いいえ一致する項目が行の=100末尾にある場合、入力から削除されます。

関連情報