Linux
如何從配置文件中刪除不等於 100 的變數
如何從配置文件中刪除不等於 100的變數hadoop.tasklog.totalLogFileSize
例子
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 . .
$ awk -F= '/hadoop\.tasklog\.totalLogFileSize/ && $2 != 100 { next } 1' file hadoop.tasklog.totalLogFileSize=100 hadoop.tasklog.purgeLogSplits=true hadoop.tasklog.logsRetainHours=12
這會將文件視為
=
-delimited 欄位。如果一行與給定的模式匹配,並且如果後面的數字=
(即第二個欄位)不是 100,則跳過該行並且不輸出。所有其他行由1
程序末尾的尾隨輸出(可以替換為{ print }
)。使用
sed
:$ sed '/hadoop\.tasklog\.totalLogFileSize/{ /=100$/!d; }' file hadoop.tasklog.totalLogFileSize=100 hadoop.tasklog.purgeLogSplits=true hadoop.tasklog.logsRetainHours=12
這會輸出所有行,但是當一行匹配給定模式,然後在行尾不匹配
=100
時,它會從輸入中刪除。