當前位置:首頁 » 操作系統 » linux字元串匹配

linux字元串匹配

發布時間: 2022-04-27 03:42:19

linux中匹配文件中的字元串

cd 路徑
grep ' \ <字元串\>' filename
如果有需要自動保存到文件可以這樣
grep ' \ <48\>' filename >> 文件名 (追加)

❷ 如何在Linux shell下做中文字元串的匹配

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' )
echo $a
linux shell 中可以將命令的結果賦值給變數,$(命令)這種格式將返回命令執行後的結果字元串
上面命令執行後,變數a的值是20140501
a=`echo 'helloworld20140501.txt'|sed 's/.*\([0-9]\{8\}\).*/\1/'`
這個命令作用也是一樣,變數a被賦值為20140501!

❸ linux/unix shell 中expr 字元串匹配問題請教~

個人認為,就是完全匹配與部分匹配的差別。
grep
只要字元串中有部分能夠與正則匹配即可,並且會輸出匹配的一整行。幫助里這樣講:
grep
searches
the
named
input
FILEs
(or
standard
input)
for
lines
containing
(注意,是containing)
a
match
to
the
given
PATTERN.
By
default,
grep
prints
the
matching
lines.
如果你在終端里正確設置了顏色顯示,那麼可以看到:
echo
"abcde"
|
grep
"cde"
結果輸出
abcde,其中cde是高亮紅色顯示的(只匹配了部分)。
echo
"abcde"
|
grep
".*cde"
結果也是輸出
abcde,其中abcde全是高亮紅色顯示的。
這表示grep是部分匹配的,只要有部分字元串匹配就OK。
expr
STRING
:
REGEXP
則是完整匹配,輸出最後匹配的那個位置(anchor)。幫助里這樣說的:
STRING
:
REGEXP
anchored
pattern
match
of
REGEXP
in
STRING
規定了:後面必須跟正則表達式,用於格式匹配。
.*b
是正則表達式,可用於匹配任何以b結尾的字元串。
但「cde」如果被用作完全匹配的話,就是必須匹配以c開頭的字元串,顯然匹配不到,因為:前的字元串以a開頭。^_^
如果改為
expr
"cdeab"
:
"cde"
,這樣就可以匹配成功並且返回3。
看看源碼應該能更清楚內部實現方式的區別。我沒看過,因此也不好多說了。以上純屬個人看法,僅供探討。

❹ linux 正則如何獲取匹配字元串

grep-oE"[0-9]+"

❺ Linux C語言 在文件中查找字元串匹配關鍵字

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define FILE_NAME_MAX 50
#define SEPERATE_STRING_MAX 100

int StrCount(FILE *file,char *str);

int main()
{
char *filename,*spestr;
FILE *fp;
filename=(char *)malloc(FILE_NAME_MAX);
spestr=(char *)malloc(SEPERATE_STRING_MAX);
printf("Input the filename:");
while(1)
{
scanf("%s",filename);
fp=fopen(filename,"r");
if(fp!=NULL)
{
break;
}
printf("Can't open the file.Try Again!");
}
printf("Input the special string:");
scanf("%s",spestr);

printf("%d times of %s in %s.",StrCount(fp,spestr),spestr,filename);

fclose(fp);
free(filename);
free(filename);

return 0;
}

int StrCount(FILE *file,char *str)
{
int count=0;
char ch;
int p=0;;

while((ch=fgetc(file))!=EOF)
{
// 當前讀入的字元匹配 str 相應位置的字元
if(ch == str[p])
{
// 匹配下一個字元
p++;
// 如果已經匹配成功
if(str[p] == '\0')
{
count++;
// 從頭開始重新匹配
p = 0;
}
}
// // 當前讀入的字元不匹配 str 相應位置的字元
else
{

❻ linux 根據簡單字元匹配文件夾中是否存在包含此字元的文件名

1、可以使用grep命令來查找當前目錄下所有文件中包含的某個特定字元。2、示例:查找當前目錄下所有帶有set的文件。說明:-r是遞歸查找-n是顯示行號*:表示當前目錄所有文件,也可以是某個文件名

❼ linux 統計匹配字元串的行數

這是給出字元串"hi"統計目錄/path/to/test. 可以把命令中的這兩個參數換成你需要的.

find/path/to/test-name"*.txt"-typef-print0|xargs-0-n1awk'/hi/{a++}END{if(a>0){printFILENAME":"a}}'

❽ linux 變數值中匹配字元

#!/bin/sh
#來自:DZ動力

i="1:sads:212:354"
echo$i|grep"^[0-9]:sads"

❾ linux 正則表達式怎麼匹配

php">一.linux文本查找命令
在說linux正規表達式之前,還介紹下linux中查找文本文件常用的三個命令:
1.grep:最早的文本匹配程序,使用POSIX定義的基本正則表達式(BRE)來匹配文本。
2.egrep:擴展式grep,其使用擴展式正規表達式(ERE)來匹配文本。
3.fgrep:快速grep,這個版本匹配固定字元串而非正則表達式。並且是唯一可以並行匹配多個字元串的版本。
如下簡單的介紹grep命令:
語法格式:
grep[options...]pattern-spec[files...]
用途:
匹配一個或多個模式的文本行。
options:
-E:使用擴展正則表達式進行匹配,grep-E或取代egrep命令。
-F:使用固定字元串進行匹配,grep-F或取代傳統的fgrep命令。
-e:通常第一個非選項的參數認為是要匹配的模式,也可以同時提供多個模式,只要將其放入單引號,並用換行字元分隔他們。
模式以減號開頭時,為防止混淆其為選項,-e選項說明其後的參數為模式,即使他以減號開頭。
-f:從pat-file文件讀取模式作為匹配。
-i:模式匹配時忽略大小寫差異。
-l:列出匹配模式的文件名稱,而不是列印匹配的行。
-q:靜默的,如果匹配成功,不將匹配的行輸出到標准輸出;否則即是不成功。
-s:不顯示錯誤信息,通常與-q並用。
-v:顯示不匹配模式的行。
說明:可以同時查找多個文件中的內容,當指定多個文件時,每個顯示出的文件行前會有文件名加一個冒號標識其來自哪個文件。
可以使用多個-e或-f選項,建立要查找的模式列表。
二.正則表達式簡要介紹
1.正則表達式的組成
(1).一般字元:沒有特殊意義的字元
(2).特殊字元(meta字元):元字元,有在正則表達式中有特殊意義
2.如下講下正則表達式中的常見meta字元
(1).POSIXBRE與ERE中都有的meta字元:
:通常用於打開或關閉後續字元的特殊含義,如(...)與{...}
.:匹配任何單個字元(除NUL)
*:匹配其前的任何數目或沒有的單個字元,例:.表示任一字元,則.*匹配任一字元的任意長度
^:匹配緊接著的正則表達式,BRE中僅在正則表達式的開頭有特殊的含義,ERE中在任何位置都有特殊含義
$:匹配前面的正則表達式,在字元串或者行結尾處。BRE中僅在正則表達式的結尾處有特殊的含義,ERE中在任何位置都有特殊含義
[]:匹配方括弧內的任一字元,其中可用連字元(-)指的連續字元的范圍;^符號苦出現在方括弧的第一個位置,則表示匹配不在列表中的任一字元,
(2).POSIXBRE中才有的字元:
{n,m}:區間表達式,匹配在它前面的單個字元重現的次數區別。{n}指重現n次;{n,m}指重現n至m次;
():保留空間,可以將最多9個獨立的子模式存儲在單個模式中。如(ab).*1:
指匹配ab組合的兩次重現,中間可存在任意數目的字元。
:重復在(與)方括弧內第n個子模式至此點的模式。
(3).POSIXERE中才有的字元:
{n,m}:與BRE的{n,m}功能相同
+:匹配前面正則表達式的一個或多個擴展
?:匹配前面正則表達式的零個或一個擴展
|:匹配|符號前或後的正則表達式
():匹配方括弧括起來的正則表達式群
(4).方括弧([])表達式
4.1.字元集[::]
標識字元集,有如下幾種:
[::alnum]
:數字字元
[:digit:]
:數字字元
[:punct:]
:標點符號字元
[:alpha:]
:字母字元
[:graph:]
:非空格字元
[:space:]
:空格字元
[:blank:]
:空格與定位字元
[:lower:]
:小寫字母字元
[:upper:]
:大寫字母字元
[:cntrl:]
:控制字元
[:print:]
:可顯示的字元
[:xdigit:]
:16進制數字
4.2.排序符號
指將多個字元視為一個符號,如[.ch.]即將ch視為一個符號
4.3.等價字元
認為多個字元相等,如[=e=]在法文的locale里,可匹配於多種與e相似的字元,此處不再列出。
說明:這三種構造除其自身的方括弧之外,還必須使用額外的方括弧括起來。
例:[[:alpha:]!]:匹配任一英文字母或感嘆號。
[[.ch.]:匹配ch排序元素,而不匹配單獨的字母c或h.
3.簡單正規表達式匹配案例
china:匹配此行中任意位置有china字元的行
^china:匹配此以china開關的行
china$:匹配以china結尾的行
^china$:匹配僅有china五個字元的行
[Cc]hina:匹配含有China或china的行
Ch.na:匹配包含Ch兩字母並且其後緊跟一個任意字元之後又有na兩個字元的行
Ch.*na:匹配一行中含Ch字元,並且其後跟0個或者多個字元,再繼續跟na兩字元
二.實例
如下通過常用實例來學習BRE和ERE匹配,源文件url.txt內容如下:
www..comhttp://www..comhttps://www..comhttp://wwwcom.com
1.url匹配
匹配以http或者https開頭,並且其後為:並且含有.的串
BRE匹配:
grep'^https{0,1}.*..*'url.txt
ERE匹配:
grep-E'^https?.*..*'url.txt
匹配結果如下:
http://www..comhttps://www..com
2.Email匹配
示例文件內容為:
[email protected]@[email protected]@gmail.com
@@.com
匹配以字母數字或者下劃線開頭的多個字元,其後有一個@之後有多個字母數字或者下劃線,其中有一個.號
grep'^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*..*'email.txt
匹配結果:
[email protected]@[email protected]
先到這里,後續再接著寫。

❿ 如何在linux下匹配兩個文件的相同字元串

可以使用vim打開文件,然後通過 vim編輯 中的 /(向後查找)或者 ?(向前查找)來查找相應的字元串。

示例:用vim打開/etc/passwd查找admin用戶名
vim /etc/passwd
打開文件後,直接輸入 /admin 回車即可查找如下圖所示:

回車執行,vim查找到後,會標識出來,如下圖所示:

另外:使用vim也可以打開可執行程序來查找字元串(在程序沒有加殼或者使用其它字元串保護的前提下)。
示例:在test程序中查找hello字元串。
雖然使用vim打開二進製程序文件,顯然的是亂碼,但是明文字元串依然能查找到,如下圖所示:

擴展:在Linux中如果要查找二進程文件即應用程序中的字元串,可以使用反匯編器、調試器等等,比如IDA,就提供強大的字元串查找功能。

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:180
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:739
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:247
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:344
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:408
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:665
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:392