我有一個帶有記錄的txt檔案。 這些記錄遵循這樣的模式:
六行,空白,六行,。
六行,空白,六行, ..... 像這樣的例子:
string line 1
字串第2行
字串第3行
字串第4行
字串第5行(年份格式yyy)。
字串第6行(可使用多行)。
<空格>(當一個新的txt塊開始時,總是一個空格)。
字串第1行
字串第2行
字串第3行
字串第4行
第5行(年份格式yyy
第6行字串
這里是一個適當的例子。 我需要標題(第2行)和年份(第5行)
。Hualong Yu, Geoffrey I. Webb,
通過概念漂移圖調節遺忘因子的自適應在線極端學習機。
Neurocomputing,
343卷。
2019,
第141-153頁。
issn 0925-2312,
https://doi.org/10.1016/j.neucom.2018.11.098.
https://www.sciencedirect.com/science/article/pii/S0925231219301572
安東尼諾-費托薩-內托, 安妮-M.P. 卡努托,
EOCD: 一種集合優化方法用于概念漂移應用。
資訊科學,
第561卷。
2021,
第81-100頁。
issn 0020-0255。
https://doi.org/10.1016/j.ins.2021.01.051.
https://www.sciencedirect.com/science/article/pii/S002002552100089X
我想提取第2行的字串和第5行的年份,所有的文本塊(用空格隔開),把它保存到另一個txt檔案中,作為這個輸出:
string line2 , yyyy
我沒有使用linux shell的經驗,所以我在這里請求一些意見來幫助我完成這項任務。
謝謝你
uj5u.com熱心網友回復:
如果你不在乎第5行中的尾部逗號,只需做:
awk '{print 2, 5}' RS= FS='/span> input > output
這假定分隔記錄的空行確實是完全空白的,不包含任何空白。 如果該行中存在任何空白,你將需要預先過濾資料以移除它。
例如:
$ cat input
于華龍,Geoffrey I. Webb,
通過概念漂移圖調控遺忘因子的自適應在線極端學習機,
Neurocomputing,
第343卷。
2019,
第141-153頁。
issn 0925-2312,
https://doi.org/10.1016/j.neucom.2018.11.098.
https://www.sciencedirect.com/science/article/pii/S0925231219301572
安東尼諾-費托薩-內托, 安妮-M.P. 卡努托,
EOCD: 一種集合優化方法用于概念漂移應用。
資訊科學,
第561卷。
2021,
第81-100頁。
issn 0020-0255。
https://doi.org/10.1016/j.ins.2021.01.051.
https://www.sciencedirect.com/science/article/pii/S002002552100089
$ awk '{print $2, $5}' RS= FS='`n' input
通過概念漂移圖調節遺忘因子的自適應在線極限學習機,2019年。
EOCD: An ensemble optimization approach for concept drift applications, 2021,
uj5u.com熱心網友回復:
類似于:
perl -00 -nE 'my @ln = (split /,
/)[1,4]; say join(",", @ln)' input.txt > output.txt
應該至少可以作為一個起點。每次讀一段,分成幾行,并在同一行中列印出你要找的兩個段落,用逗號隔開。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309913.html
標籤:
上一篇:Shell腳本中的多行awk腳本
