我有文本文件:file.confsed:如何在一行文本之後插入行?
### Option: LogFile
# Name of log file.
# If not set, syslog is used.
#
# Mandatory: no
# Default:
# LogFile=
### Option: LogFileSize
# Maximum size of log file in MB.
# 0 - disable automatic log rotation.
#
# Mandatory: no
# Range: 0-1024
# Default:
# LogFileSize=1
我曾嘗試:
sed --posix -e '/\bLogFile\b/{:a;n;/^ *$/!ba;i\LogFile=/tmp/log1.log' -e '}' file.conf
,這是工作的罰款,對於那些選擇方框之後是一個空行。
問題是:在最後一個塊的末尾,如果沒有新行存在,那麼它不會插入行。這裏帶有文本LogFileSize。
如何處理此問題。
AFAICS,那是因爲你告訴它不要通過圖形使用''後LogFile' \ B'和'LogFileSize'不匹配,因爲'Size'是單詞的一部分,而不是一個字的邊界。您可能還有問題,因爲當文件中沒有剩餘行時,'n'命令不能讀取另一行;我不確定它做了什麼,但它可以在插入操作發生之前終止命令序列。我不禁想到,如果您將腳本分散到多行,腳本會更易於閱讀。 –
最後使用H添加一行;作爲你的sed腳本的開始,如果你可以用這個改變腳本的話。這不會使LogFileSize像J Leffler提到的那樣傳遞\ bLogFile \ b – NeronLeVelu
也許您需要重申您的條件:*在空白行之前的一段代碼之後插入*,並且在最後一行代碼之後附加* *該文件的行不是空行。 – potong