工作總結02

2021-09-24 06:01:57 字數 4771 閱讀 6931

繼續shell學習

處理字串的方法

(1)基礎正規表示式(留意編碼)

[:alnum:]——代表英文大小寫字元及數字

[:alpha:]——代表任何英文大小寫字元

[:digit:]——代表數字

[:lower:]——代表小寫字元

[:upper:]——代表大寫字元

grep [-a] [-b] '查詢字元' 檔名

例子:用dmesg列出核心資訊,找出含qxl所在行的前後3行,並且顯示行號

dmesg |grep -n -a3 -b3 'qxl'
-n:顯示行號

-i:不區分大小寫

-a:前3行

-b:後3行

regular_express.txt

語系已調整好

例1:查詢字串

grep -n 'the' regular_express.txt
例2:選擇不含the字串的某行

grep -vn 'the' regular_express.txt
例3:不區分大小寫查詢字串

grep -in 'the' regular_express.txt
例4:同時查詢test和taste兩個關鍵字

思路:擁有共通的't?st'存在,任意擁有'e'或'a'都能被匹配

grep -n 't[ea]st' regular_express.txt
例5:查詢'oo'字元

grep -n 'oo' regular_express.txt
例6:控制'oo'前面無'g'字元

grep -n '[^g]oo' regular_express.txt
例7:控制'oo'前乙個字元不能是小寫英文

grep -n '[^a-z]oo' regular_express.txt
abcd...z在ascll碼是連續的,因此可省略為a-z

例8:行首字元^,匹配出開頭為小寫字元的行

grep -n '^[a-z]' regular_express.txt
例9:不要開頭為英文本元

grep -n '^[^a-za-z]' regular_express.txt
^符號,在字元集合符號之內與之外是不同的。具體如下:

內代表反向選擇

外代表行首符號

例10:匹配'.'結尾的那一行

由於小數點還有其他意思,需先用轉義符解除其他意思

grep -n '\.$' regular_express.txt
例11:匹配空白行

grep -n '^$' regular_express.txt
例12:

檔案:/etc/vsyslog.conf

匹配不要空白行以及#開頭的注釋行

grep -vn '^$' /etc/vsylog.conf |grep -v '^#' 

grep -n -v "^$" /opt/data/vsyslog.conf |grep "^[^#]"

.:一定有乙個任意字元

*:重複前乙個字元,0到無窮多次

例1:找出'g??d'字元

grep -n 'g..g' regular_express.txt
例2:找出至少兩個'oo'的一行

grep -n 'ooo*' regular_express.txt
例3:找出g開頭與g結尾,當中字元可有可無

grep -n 'g.*g' regular_express.txt
例4:找出任意數字的行列

連續re字元,表達數字後零個或多個數字的意思,相當於'[0-9]'

grep -n '[0-9][0-9]*' regular_express.txt
例1:找到兩個'oo'

{}中間的數字代表連續多少字元

grep -n 'oo' regular_express.txt

grep -n 'o\' regular_express.txt

例2:g後面接2到5個o,再接g的字串

grep -n 'go\g' regular_express.txt
例3:2個0以上的goo...g

grep -n 'go\g' regular_express.txt

grep -n 'gooo*g' regular_express.txt

管道命令,可以分析標準輸入,還可以將資料進行替換、刪除、新增、選取特定行等功能

sed [-nefr] [操作]

選項與引數:

-n:加上該引數,則只有經過sed特殊處理的那一行才會被列出來

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

慚怍說明:[n1[,n2]]function

n1,n2:代表選擇進行操作的行數

function:

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

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

d:刪除

p:列印,亦即將某個選擇的資料列印出來。通常p會與引數sed -n 一起出現

s:替換,可以直接進行替換的工作,通常這個s的操作可以搭配正規表示式,例如1,20s/old/new/g

例1:將/etc//passwd的內容列出並且列印行號,同時,請將第2~5行刪除

沒有sed -e也可以。

nl /etc/passwd |sed '2,5d'
例2:將將/etc//passwd的內容列出並且列印行號,同時,請將第3行到最後一行刪除

nl /etc/passwd |sed '3,$d'
例3:在第2行後面加入兩行字,例如

nl /etc/passwd |sed '2a drink tea or drink beer?'

--增加兩行以上

nl /etc/passwd |sed '2a drink tea or drink beer? or .....\

drink coffee?'

例4:(以行為單位)將第2~5行的內容替換為『no hb』

nl /etc/passwd |sed '2,5c no hb'
例5:使用sed列出11-20行

nl /etc/passwd |sed -n '11,20p'
重點:

部分資料的查詢並替換功能

/sbin/ifconfig etho |grep 'inet' |sed 's/^.*inet//g' \

|sed 's/netmask.*$//g'

分析:

(1)將開頭有乙個或無窮個字元與inet組成的字元替換為空

(2)將netmask與有乙個或無窮個字元的結尾組成的字元替換為空

擴充套件:利用sed將man所在行內容刪除

cat /etc/man_db.conf |grep man |sed 's/#.*$//g' \

sed '/^$/d'

直接修改檔案內容(重要):sed -i

例1:將regular.txt內每一行結尾若為.則換成!

sed -i 's/\.$/\!/g' regular.txt
例2:在regular.txt結尾加上'i am bb '

sed -i '$a i am bb' regular.txt
awk '條件型別1  條件型別2 ....' filename

例子:首先last -n 5

dmtsai pts/0 192.168.1.100 tue jal 14 17:32 still logging

.

.

.

.

.

.

$0:一行字段

$1:第一行第乙個欄位dmtsai

$n:第一行第n個字段

nf:每一行($0)擁有的字段總數

nr:目前awk所處理的是第幾行資料

fs:目前的分隔符。預設是空格。

例1:列出每一行的賬號,列出目前處理的行數,且說明該行有多少個字段。

last -n 5 |awk ''
{}:表示只有操作1

"\t""lines"   => 」\t lines「   (雙引號下仍保留原意,tab的意思)

例2:(帶邏輯運算)檢視第三欄小於10以下的資料,並且僅列出賬號與第三列

cat /etc/passwd |awk ' $3 <10 '

工作總結 2010 3 16

在cuda中,一般的資料複製到的顯示卡記憶體的部分,稱為global memory。這些記憶體時沒有cache 的,而且,訪問global memory所需要的時間 即latency 是非常長的,通常是數百個cycles.如果我們的程式只有乙個thread,所以每次它讀取global memory的...

找工作總結

算一算,從2008年9月份開始找工作,到2009年12月現在已經有3個月了 找工作,算是人生一段特殊的經歷吧,知道了很多公司,認識了很多人,也學習到了很多東西,對這個社會也認識的更清楚了。從一開始的自信,以為很多崗位都是為自己量身打造,卻一次次被bs,讓我很受打擊。特別是幾個好公司的筆試都沒有通過,...

2011工作總結

1 編碼能力 實踐中,開始注重模型的概念。所謂模型打個比方 要做一台電視機,首先搞清楚你想怎麼使用它,目的是讓它看起來更方便易用。根據常規經驗判斷,電器需要電源 需要訊號,這兩點是必不可少。ok,那畫個草圖,電視要顯示,那我給它準備乙個顯示的東西,現實生活中,有以下標準可選 液晶顯示器,投影顯示器 ...