當前位置:才華齋>IT認證>Linux認證>

Linux認證基礎知識:Linux中正則表示式與檔案處理

Linux認證 閱讀(2.74W)

在學習Linux認證過程中,每個人會遇到每個人不同的問題,或小或大,真心希望同學們能少受些折磨,多得一些成就感與豁然開朗的感覺,這樣的學習才能化被動為主動,越學越快樂

Linux認證基礎知識:Linux中正則表示式與檔案處理

  一、正則表示式

1.簡單的說正則表示式就是處理字串的方法,它是以行為單位來進行字串的處理行為,正則表示式通過一些特殊符號的輔助,可以讓使用者輕易的達到查詢,刪除,替換某特定字串的處理程式

在資料中查詢一個字串時,是以整行為單位來進行資料的選取的,也就是說假如一個檔案內有10行,那麼其中兩行是有用的,那麼就將這兩行顯示出來,其它的丟棄

3.在bash當中,我們知道萬用字元*可以用來表示任意個字元,但是正則表示式中的*表示不同的含義

在正則表示式中,'.'表示的是一定有一個任意字元的意思

在正則表示式中,'*'表示的是重複前一個字元0到無窮多次的意思

4.基礎的正則表示式

RE字元 意義

^word 查詢行首為word的行

word$ 查詢結尾為word的行

. 代表一定有一個任意的字元

轉義字元,將特殊字元的特殊意義去除

* 重複前一個字元0個到無窮多個

[list] 從字元集合裡面選擇一個字元

[n1-n2] 從要選擇的範圍裡面選擇一個字元

[^list] 從不是這個字元集合裡面找出一個字元

{n,m} 連續n到m個的前一個字元,{n}則是連續n個前一個字元,{n,}則是聯絡n到無窮多個前一個字元

  二、sed 工具

1 sed本省是一個管道命令,可以分析標轉輸入,而且sed還可以將資料進行替換,刪除,新增,選取特定行等功能

2 sed的'用法

sed [-nefr] [動作]

-n 使用安靜模式,在一般模式中,所有來自stdin的資料一般都會被列出到螢幕上,但是如果加上-n這個引數的話,則只有經過sed特殊處理的那一行才會被列出

-e 直接在命令模式上進行sed的動作編輯

-f 直接將sed的動作寫在一個檔案內,-f filename則可以執行filename內的sed動作

-r sed的動作支援的是擴充套件正則表示式的語法

-i 直接修改檔案的內容,而不是由螢幕輸出

3.動作說明 n1,n2 function

n1,n2不見得會存在,一般代表的是進行的動作的行數

function有下面這些引數

a:新增,a的後面可以接字串,而這些字串會在新的一行出現,目前的下一行

c:替換,c的後面可以接字串,這些字串可以替換n1,n2之間的行

d:刪除,因為是刪除,所以d後面通常不接任何引數

i:插入,i的後面可以接字串,而這些字串會在新的一行,目前的上一行

p:列印,也就是將某個選擇的資料打印出來

s:替換,可以直接進行替換的工作

  三、檔案的格式化以及相關處理

1.格式化列印

printf '列印內容' 實際內容

關於C程式語言內,常見的變數格式

%ns 那個n是數字,s代表的是string

%nd 那個n是數字,d代表的是整數

% 那個n與N都是數字,f代表浮點數

2.檔案比較工具diff

diff就是用在比較兩個檔案之間的區別,並且是行為單位來比較的,一般是用在ASCLL純文字檔案的比較上

diff的用法

diff [-bBi] from_file to_file

-b 忽略一行當中僅有多個空白的區別

-B 忽略空白行的區別

-i 忽略大小寫的不同

3.如果我們要將舊的檔案升級成為新的檔案時,我們可以先利用diff比較出文件的區別,並將區別檔案製作成為補丁檔案,再由補丁檔案更新舊檔案即可。

一般來說我們使用diff製作出來的比較檔案通常副檔名為。patch

更新:patch -pN < patch_file

還原:patch -R -pN < patch_file