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