日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux C文件中查找字符串的方法 (linux c 文件查找字符串)

在Linux下編寫C程序時(shí),經(jīng)常需要查找文件中的某個(gè)字符串。本文將介紹如何在C文件中查找字符串的方法,以方便讀者更好地編寫C程序。

一、使用系統(tǒng)命令

在Linux中,可以使用grep命令來查找文件中的字符串。grep命令的基本格式為:

“`sh

grep [選項(xiàng)] [字符串] [文件名]

“`

例如,在當(dāng)前目錄下查找所有包含“hello”的文件,可以使用以下命令:

“`sh

grep -rn “hello” .

“`

其中,-r表示遞歸查找,-n表示打印匹配的行號(hào),”.”表示當(dāng)前目錄。

如果想要查找字符串出現(xiàn)的次數(shù),則可以使用以下命令:

“`sh

grep -oc “hello” file.txt

“`

其中,-o表示只輸出匹配的部分,-c表示統(tǒng)計(jì)匹配的次數(shù)。

在C程序中,可以通過system函數(shù)來調(diào)用grep命令。例如:

“`c

#include

#include

int mn()

{

system(“grep -rn \”hello\” .”);

return 0;

}

“`

以上代碼執(zhí)行后,會(huì)在終端輸出所有包含“hello”的文件和相應(yīng)的行號(hào)。

二、使用文件流

除了使用系統(tǒng)命令,還可以使用C語言中的文件流來查找字符串。具體步驟如下:

1. 打開文件

可以使用fopen函數(shù)來打開文件。fopen函數(shù)的基本格式為:

“`c

FILE *fopen(const char *filename, const char *mode);

“`

其中,filename表示要打開的文件名,mode表示打開文件的方式。在查找字符串時(shí),應(yīng)該以只讀方式打開文件,代碼如下:

“`c

FILE *fp;

fp=fopen(“file.txt”, “r”);

if(fp==NULL)

{

printf(“File open error!\n”);

return -1;

}

“`

2. 逐行讀取文件內(nèi)容

可以使用fgets函數(shù)逐行讀取文件內(nèi)容。fgets函數(shù)的基本格式為:

“`c

char *fgets(char *str, int n, FILE *stream);

“`

其中,str表示讀取的字符串,n表示最多讀取的字符數(shù),stream表示要讀取的文件流。在讀取文件內(nèi)容時(shí),可以將每行內(nèi)容存儲(chǔ)到一個(gè)字符串?dāng)?shù)組中。

“`c

char buf[1024];

while(fgets(buf, 1024, fp))

{

//處理每行內(nèi)容

}

“`

3. 查找字符串

在每行內(nèi)容中查找字符串,可以使用strstr函數(shù)。strstr函數(shù)的基本格式為:

“`c

char *strstr(const char *haystack, const char *needle);

“`

其中,haystack表示要搜索的字符串,needle表示要查找的子字符串。如果找到了,strstr函數(shù)將返回之一次出現(xiàn)的位置,否則返回NULL。代碼如下:

“`c

char *pos;

while(fgets(buf, 1024, fp))

{

pos=strstr(buf, “hello”);

if(pos!=NULL)

{

printf(“Line: %s\n”, buf);

}

}

“`

4. 關(guān)閉文件

文件使用完畢后,應(yīng)該及時(shí)關(guān)閉??梢允褂胒close函數(shù)來關(guān)閉文件,代碼如下:

“`c

fclose(fp);

“`

以上是使用文件流查找字符串的基本步驟。在實(shí)際編寫時(shí),可以根據(jù)具體需求進(jìn)行靈活調(diào)整,從而實(shí)現(xiàn)更加高效和精準(zhǔn)的字符串查找。

相關(guān)問題拓展閱讀:

  • linux怎樣查找以某個(gè)字母打頭的文件或文件夾?

linux怎樣查找以某個(gè)字母打頭的文件或文件夾?

ls -al |grep c* 這樣就可以了,運(yùn)用管道命令|。

如何使用命令行在Linux中查找文件和文件夾

使用查找命令,“find”命令允許您搜索知道近似文件名的文件。該命令的最簡單形式在當(dāng)前目錄中搜索文件,并遞歸地通過其與所提供的搜索條件匹配的子目錄。您可以按名稱,所有者,組,類型,權(quán)限,日期和其他條件搜索文件。

在提示符下鍵入以下命令將列出當(dāng)前目錄中的所有文件。

“find”后的點(diǎn)表示當(dāng)前目錄。

要查找符合特定模式的文件,請(qǐng)使用-name參數(shù)。您可以使用文件名元字符(例如*),但您應(yīng)該將一個(gè)轉(zhuǎn)義字符(\)放在每個(gè)字符之前或?qū)⑺鼈兝ㄔ谝?hào)中。

例如,如果要在Documents目錄中找到以“pro”開頭的所有文件,我們將使用該cd Documents/命令更改為Documents目錄,然后鍵入以下命令:

find . -name pro\*

列出以“pro”開頭的當(dāng)前目錄中的所有文件。

注意:find命令默認(rèn)為區(qū)分大小寫。如果要搜索單詞或短語不區(qū)分大小寫,請(qǐng)使用-inamefind命令中的選項(xiàng)。這是-name命令的不區(qū)分大小寫的版本。

如果find沒有找到符合條件的任何文件,則不會(huì)產(chǎn)生任何輸出。

find命令有很多選項(xiàng)可用于完善搜索。有關(guān)find命令的更多信息,請(qǐng)man find  在“終端”窗口中運(yùn)行,然后按Enter鍵。

使用定位命令

locate命令比find命令更快,因?yàn)樗褂昧讼惹皹?gòu)建的數(shù)據(jù)庫,而find命令通過所有實(shí)際目錄和文件在實(shí)際系統(tǒng)中進(jìn)行搜索。locate命令返回包含指定字符組的所有路徑名的列表。

數(shù)據(jù)庫從cron定期更新,但您也可以隨時(shí)更新數(shù)據(jù),以便您可以獲得最新的結(jié)果。為此,請(qǐng)?jiān)谔崾痉骆I入以下命令:

sudo updatedb

出現(xiàn)提示時(shí)輸入密碼。

locate命令的基本形式從文件系統(tǒng)中找到包含搜索條件全部或部分內(nèi)容的所有文件。

locate mydata

例如,上面的命令發(fā)現(xiàn)了兩個(gè)包含“mydata”的文件和一個(gè)包含“數(shù)據(jù)”的文件

如果要查找包含完全唯一的搜索條件的所有文件或目錄,請(qǐng)使用-blocate命令中的選項(xiàng),如下所示。

locate-b’\ mydata’御彎

上述命令中的反斜杠是一個(gè)globbing字符,它提供了將非特定文件名中的通配符擴(kuò)展成一組特定文件名的方法。通配符是表達(dá)式被評(píng)估時(shí)可以被一個(gè)或多個(gè)字符替換的符號(hào)。最常見的通配符是問號(hào)(?),它表示單個(gè)字符,而asterisk(*)表示連續(xù)的字符串。在上面的例子中,反斜杠禁用“* mydata *”隱式替換“mydata”,所以最終只能包含“mydata”的結(jié)果。

mlocate命令是一個(gè)新的locate的實(shí)現(xiàn)。它索引整個(gè)文件系統(tǒng),但搜索結(jié)果只包含當(dāng)前用戶可訪問的文件。更新mlocate數(shù)據(jù)庫時(shí),它會(huì)在數(shù)據(jù)庫中保留時(shí)間戳信息。這允許mlocate知道目錄中的內(nèi)容是否更改慶正,而不再讀取內(nèi)容,并使數(shù)據(jù)庫更新速度更快,對(duì)硬盤驅(qū)動(dòng)器的要求也更低。

當(dāng)您安裝mlocate時(shí),/ usr / bin / locate二進(jìn)制文件更改為指向mlocate。要安裝mlocate,如果尚未包括在Linux發(fā)行版中,請(qǐng)?jiān)谔崾痉骆I入以下命令。

sudo apt-get install mlocate

注意:我們將在本文后面顯示一條命令,允許您確定命令的可執(zhí)行文件所在的位置(如果存在)。

mlocate命令不使用與標(biāo)準(zhǔn)locate命令相同的數(shù)據(jù)庫文件。因此,您可能需要在提示符下鍵入以下命令手動(dòng)創(chuàng)建數(shù)據(jù)庫:

sudo /etc/cron.daily/mlocate

在數(shù)據(jù)庫手動(dòng)創(chuàng)建數(shù)據(jù)庫或從cron運(yùn)行腳本之前,mlocate命令將不起作用。

有關(guān)locate或mlocate命令的詳細(xì)信息,請(qǐng)鍵入man locate或man mlocate  在“終端”窗口中,然后按Enter鍵。兩個(gè)命令顯示相同的幫助屏幕。

使用哪個(gè)命令

“which”命令返回發(fā)出命令時(shí)調(diào)用的可執(zhí)行文件的絕對(duì)路徑。這在找到用于在桌面,面板或桌面管理器鎮(zhèn)差悶中的其他位置創(chuàng)建程序的快捷方式時(shí)可用于查找可執(zhí)行文件的位置。例如,鍵入命令將which firefox 顯示下圖中顯示的結(jié)果。

默認(rèn)情況下,哪個(gè)命令只顯示之一個(gè)匹配的可執(zhí)行文件。要顯示所有匹配的可執(zhí)行文件,請(qǐng)使用-a以下命令的選項(xiàng):

這是一個(gè)firefox

您可以一次搜索多個(gè)可執(zhí)行文件,如下圖所示。只顯示找到的可執(zhí)行文件的路徑。在下面的例子中,只發(fā)現(xiàn)了“ps”可執(zhí)行文件。

注意:哪個(gè)命令只搜索當(dāng)前用戶的PATH變量。如果搜索只能作為普通用戶使用的root用戶的可執(zhí)行文件,則不會(huì)顯示任何結(jié)果。

有關(guān)哪個(gè)命令的更多信息,請(qǐng)?jiān)诮K端窗口中的命令提示符下鍵入“man which”(不帶引號(hào)),然后按Enter鍵。

使用Whereis命令

whereis命令用于查找命令的二進(jìn)制文件,源文件和手冊(cè)頁文件所在的位置。例如,whereis firefox 在提示符下輸入將顯示如下圖所示的結(jié)果

如果您只想要顯示可執(zhí)行文件的路徑,而不是源和路徑(man(頁)),請(qǐng)使用該-b選項(xiàng)。例如,該命令whereis -b firefox將僅顯示/usr/bin/firefox為結(jié)果。這很方便,因?yàn)槟赡軙?huì)比搜索該程序的源頁面和手冊(cè)頁更頻繁地搜索程序的可執(zhí)行文件。您也可以僅搜索源文件(-s)或僅搜索手冊(cè)頁(-m)。

有關(guān)whereis命令的詳細(xì)信息,請(qǐng)鍵入man whereis 終端窗口,然后按Enter鍵。

了解Whereis命令與哪個(gè)命令之間的區(qū)別

whereis命令顯示命令的二進(jìn)制,源和手冊(cè)頁的位置,而哪個(gè)命令僅顯示命令的二進(jìn)制文件的位置。

whereis命令搜索二進(jìn)制,源和man文件的特定目錄列表,而哪個(gè)命令搜索當(dāng)前用戶的PATH環(huán)境變量中列出的目錄。對(duì)于whereis命令,可以在命令的手冊(cè)頁的FILES部分中找到具體目錄的列表。

當(dāng)涉及默認(rèn)顯示的結(jié)果時(shí),whereis命令顯示它找到的所有內(nèi)容,而哪個(gè)命令只顯示找到的之一個(gè)可執(zhí)行文件。您可以使用-a前面討論過的選項(xiàng)來更改該命令。

因?yàn)閣hereis命令只使用硬編碼到命令中的路徑,所以您可能并不總是找到您要查找的內(nèi)容。如果您正在搜索一個(gè)程序,則認(rèn)為可能安裝在whereis命令的手冊(cè)頁中未列出的目錄中,您可能希望使用該-a選項(xiàng)以查找系統(tǒng)中所有出現(xiàn)的命令,

linux c 文件查找字符串的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux c 文件查找字符串,Linux C文件中查找字符串的方法,linux怎樣查找以某個(gè)字母打頭的文件或文件夾?的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。


當(dāng)前文章:Linux C文件中查找字符串的方法 (linux c 文件查找字符串)
標(biāo)題URL:http://www.dlmjj.cn/article/dhjodjc.html