用Linux怎樣批量提取一批文件中的某一行數(shù)據(jù)呢?
想要在Linux中批量提取一批文件中的某一行數(shù)據(jù),我的思路是把問題分解:
遍歷這批文件
提取某一行數(shù)據(jù)(根據(jù)模式匹配或者固定行號(hào))
將數(shù)據(jù)輸出到某處
可以采用shell編程的方式來(lái)完成這個(gè)任務(wù):
批量文件遍歷批量文件遍歷有兩個(gè)辦法實(shí)現(xiàn),如果知道文件的列表,就可以按照文件的列表來(lái)遍歷,例如:
其中file001、file002、file003是你這一批文件的路徑+文件名。
如果這些文件都放在了一個(gè)目錄foo下面,也可以寫成這個(gè)樣子:
從文件中提取某一行數(shù)據(jù)根據(jù)關(guān)鍵詞匹配提取
比如當(dāng)且僅當(dāng)關(guān)鍵詞“bar”在這批文件中的每一個(gè)文件僅出現(xiàn)一次,我們就可以根據(jù)這個(gè)關(guān)鍵詞定位它所在的行,并輸出這一行:
grep "bar" filename
寫到循環(huán)中就是:
根據(jù)行號(hào)匹配提取
使用sed命令可以根據(jù)固定的行號(hào)提取文件中該行的內(nèi)容,比如固定提取每個(gè)文件的第30行:
sed -n '30p' filename
寫到循環(huán)中就是:
將數(shù)據(jù)輸出到某處最后將查找的內(nèi)容使用重定向“>>”輸出到文本文件中。完整的腳本大約是這樣的:
總結(jié)一下,類似稍微復(fù)雜的文件操作首先想到的是將問題分解,針對(duì)每個(gè)小問題找出解決的方案。另外此例中如果文件都在一個(gè)目錄內(nèi)的情況下,并且采用的是關(guān)鍵詞匹配提取,則可以直接使用grep語(yǔ)句一次性搞定:
grep “key_word” /foo/*
這樣做的缺點(diǎn)是輸出的信息帶有文件名,需要進(jìn)一步處理,這里就不詳解了。
如果我的回答對(duì)你有點(diǎn)價(jià)值,請(qǐng)莫忘點(diǎn)贊加關(guān)注,謝謝!歡迎在評(píng)論區(qū)發(fā)表各種意見!
本文為作者原創(chuàng),嚴(yán)禁轉(zhuǎn)載,違者必究。