我有一個包含大量收集日誌的日誌文件,我已經使用正則表達式輸出grep
命令,該正則表達式輸出與之匹配的行數。 這是grep
命令我匹配線使用,以輸出:在特定範圍內剪切的Bash腳本
grep -n -E 'START_REGEX|END_REGEX' Example.log | cut -d ':' -f 1 > ranges.txt
正則表達式是有條件它可以匹配開始特定的日誌或它的端部的,所以輸出是這樣的:
12
45
128
136
...
這個想法是使用它作爲範圍的來源,使日誌文件從第一個數字到第二個數據進行特定的剪切,並將它們保存在另一個文件中。
範圍由輸出的夫婦組成,根據示例,第一個範圍是12,45
,第二個範圍是128,136
。
我期望在最終文件中看到來自12 to 45
行的所有文本,然後是128 to 136
。 我面臨的問題是sed
命令似乎只能在一個範圍內工作。
sed -E -iTMP "$START_RANGE,$END_RANGE! d;$END_RANGEq" $FILE_NAME
有什麼辦法(可能與awk
)這樣做,只是在一個「循環」? 約束:我只能使用支持的bash命令。
請澄清一下從源構成範圍,也給示例輸入和輸出。 – 123
在考慮精心製作的grep之前,您究竟首先想到了什麼? – kabanus
謝謝我更新了答案。 – Andrea