Linux從文件中提取特定內(nèi)容的實(shí)用技巧分享
引言
在日常數(shù)據(jù)處理和配置文件管理中,我們經(jīng)常需要從大型文件中提取特定內(nèi)容。
本文介紹的提取特定行技術(shù)正是這些高級(jí)操作的基礎(chǔ)。以提取含有"1"的簡(jiǎn)單需求為例,我們可以掌握通用的文件處理模式。
1、方法一:使用 grep 命令
1.1 grep 命令基礎(chǔ)
grep(Global Regular Expression Print)是 Unix/Linux 系統(tǒng)中強(qiáng)大的文本搜索工具?;菊Z(yǔ)法為:
grep [選項(xiàng)] 模式 [文件...]
在我們的案例中,命令非常簡(jiǎn)單:
grep "1" 111.yaml > new_file.yaml
1.2 命令詳解
"1":搜索模式,這里是要匹配的數(shù)字 1111.yaml:輸入文件>:重定向操作符new_file.yaml:輸出文件
1.3 高級(jí)用法
- 忽略大小寫:
grep -i "pattern" file - 顯示行號(hào):
grep -n "1" 111.yaml - 反向匹配:
grep -v "1" 111.yaml(提取不含 1 的行) - 正則表達(dá)式:
grep "^1" 111.yaml(匹配以 1 開(kāi)頭的行)
2、方法二:使用 Python 腳本
2.1 Python 實(shí)現(xiàn)解析
提供的 Python 腳本非常簡(jiǎn)潔:
with open('111.yaml', 'r') as file, open('new_file.yaml', 'w') as new_file:
for line in file:
if '1' in line:
new_file.write(line)
2.2 代碼分步說(shuō)明
文件操作:
open('111.yaml', 'r'):以只讀模式打開(kāi)源文件open('new_file.yaml', 'w'):以寫入模式打開(kāi)目標(biāo)文件with語(yǔ)句確保文件操作后自動(dòng)關(guān)閉
逐行處理:
for line in file::迭代文件的每一行if '1' in line::檢查當(dāng)前行是否包含字符"1"
寫入匹配行:
new_file.write(line):將匹配行寫入新文件
2.3 增強(qiáng)版 Python 實(shí)現(xiàn)
更健壯的實(shí)現(xiàn)應(yīng)考慮以下方面:
try:
with open('111.yaml', 'r', encoding='utf-8') as file, \
open('new_file.yaml', 'w', encoding='utf-8') as new_file:
for line_number, line in enumerate(file, 1):
try:
if '1' in line:
new_file.write(line)
except UnicodeDecodeError:
print(f"編碼錯(cuò)誤發(fā)生在第{line_number}行")
continue
except FileNotFoundError:
print("錯(cuò)誤:輸入文件未找到")
except IOError as e:
print(f"文件操作錯(cuò)誤: {e}")
到此這篇關(guān)于Linux從文件中提取特定內(nèi)容的實(shí)用技巧分享的文章就介紹到這了,更多相關(guān)Linux文件中提取特定內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Win7安裝和配置Apache2.4服務(wù)器的詳細(xì)方法
這篇文章主要介紹了Win7安裝和配置Apache2.4服務(wù)器的詳細(xì)方法,需要的朋友可以參考下2017-09-09
centos 6.9 升級(jí)glibc動(dòng)態(tài)庫(kù)的詳細(xì)過(guò)程
glibc是gnu發(fā)布的libc庫(kù),即c運(yùn)行庫(kù),glibc是linux系統(tǒng)中最底層的api,幾乎其它任何運(yùn)行庫(kù)都會(huì)依賴于glibc。這篇文章主要介紹了centos 6.9 升級(jí)glibc動(dòng)態(tài)庫(kù)的詳細(xì)過(guò)程,需要的朋友可以參考下2019-11-11
Linux下將源文件編譯成目標(biāo)文件的過(guò)程解析
這篇文章主要介紹了Linux下將源文件編譯成目標(biāo)文件的過(guò)程解析,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Xshell5連接虛擬機(jī)中的Linux的方法以及失敗原因解決
這篇文章主要介紹了Xshell5連接虛擬機(jī)中的Linux的方法以及失敗原因解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Linux下使用SSH遠(yuǎn)程執(zhí)行命令方法收集
這篇文章主要介紹了Linux下使用SSH遠(yuǎn)程執(zhí)行命令方法收集,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Apache中使非偽靜態(tài)url跳轉(zhuǎn)到偽靜態(tài)url的方法
這篇文章主要介紹了Apache中使非偽靜態(tài)url跳轉(zhuǎn)到偽靜態(tài)url的方法,主要是在使用.htaccess時(shí)的問(wèn)題,需要的朋友可以參考下2015-07-07

