grep 常用命令
這個--include選項,可以這樣使用:
grep -rn --include='*.c' --include='*.h' re .
可以指定多次, 如果真是上面的這種情況,? 其實可以用
grep -rn --include='*.[ch]' re .
但是, 如果源文件中含有C++源代碼,上面的方法就不湊效了, 因為[]中只能放一個字符.
grep -rn --include='*.{cpp,h}' 也是不行的.
此時需要不加引號的展開(由bash執行grep之前就已經完成,可以通過set -x觀察)
grep -rn --include=*.{cpp,h} re .
bash中對{A,B}這種形式的展開,會忽略是否在當前目錄下存在相應的文件.這樣的寫法, 可以避免手指累殘在命令行上.
?
高亮顯示
grep --color=auto 'pattern' ? 'text'
?
echo -e '\e[34mhaha\e[m'? 這樣會輸出帶顏色的字符串 -e 表示特殊處理 \e 這個 \e必須跟著 [符號
?
?
grep 常用?
grep [-acinv] '搜尋字符串' filename
參數說明:
-a :將 binary 檔案以 text 檔案的方式搜尋數據
-c :計算找到 '搜尋字符串'的次數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串'內容的那一行!
?
?
1.搜索特定的字符?
grep 'oo' pp.txt? 以下僅僅用 pp代表 pp.txt
?
查看顯示字符的行數 ?
grep -n 'oo' pp?
?
查看非oo的字符?
grep -v 'oo' pp
?
查看大小寫忽略的字符
grep -i 'oo' p
?
?
2.利用[]處理搜索結果
查看 tast 和 test的字符串
grep -n 't[ae]st' pp? 這里[ae]只當一個字符處理 a或者是 e 這樣就能匹配 上面的要求
?
若是希望匹配 t(x)st 這個x是任意的字符的話,那么可以如下處理方式
grep 't[.]st' pp? .符號代表任意的字符
?
查看包含oo字符的信息
grep -n 'oo' pp
?
若是希望在oo之前沒有g的字符信息
grep -n '[^g]oo' pp 這里的^就是取反的意思非goo得字符
?
取前面非字符的字符
grep -n '[^a-zA-Z]oo' pp?
?
得到數字的字符的話
grep -n '[0-9]' pp? // 其實這個等同于? grep -n '[0-9[0-9]*' pp * 代表0個或是多個重復的信息
?
?
3.行首和行尾的特殊處理 $^?
若是希望取得第一行是 the 開頭的字符行
grep -n '^the' pp?
?
若是希望取得以英文字符開頭的字符
grep -n '^[a-zA-Z]' pp
?
取得不是以英文字符開頭的信息
grep -n '^[^a-zA-Z]' pp ? // 里面的^是取反外面的^是以上面開頭
?
取得小數點結尾的行
grep -n '\.$' pp ? ? //小數點是特殊字符需要用\進行轉義
注意在windows下換行時 ^M 這個符號?
?
?
取得一個空行的方式
grep -n '^$' pp 這里就是取空行了
?
希望取得所有文檔中非注釋掉得內容的話 那么可如下
grep -v '^$' pp|grep -v ^#? ? ? ? ? ? ? 第一個是取非空行的數據 第一個管道是取非#開頭的數據
我像有時候更多的是取 #開頭的行
grep -n '^#' pp?
?
4.任意字符和重復字符
. :絕對的任意字符
* :0個或是多個相同字符
?
要查看gf中間是兩個字符的數據
grep -n 'g..f' pp
?
至少有一個是o的字符串
grep -n 'oo*' pp? //因為*代表0個或是多個
?
以g開頭和結尾,中間至少一個o
grep -n 'goo*g'?
?
查找gg中間是任意字符的字符串
grep -n 'g.*g' pp 這里.就代表任意字符
?
5.限定符 {}
查看g和p之間存在兩個連個o的字符串
grep -n 'go\{2,5\}p'
?
查找至少兩個的字符創
grep -n 'go\{2,\}p' pp
?
查找只有兩個的字符串
grep -n 'go\{2\}p' pp
?
?
6.重要的特殊字符
?
^word待搜尋的字符串(word)在行首!
范例:grep -n '^#' pp搜尋行首為 # 開始的那一行!
?
?
word$待搜尋的字符串(word)在行尾!
范例:grep -n '!$' pp將行尾為 ! 的那一行打印出來!
?
?
.代表任意的一個字符
范例; grep -n 'g.' pp將是g開頭的兩個字符打印出來
?
?
\將特殊字符轉義
范例:grep -n \' pp?搜索有單引號的那一行
?
*:匹配0個或是多個字符
grep -n 'o*' pp 匹配擁有零個或是多個o的字符
?
\{n,m\} :匹配的個數
grep -n 'o\{2\}' pp 打印出擁有兩個oo的字符
?
[]匹配單個字符?
? 1.[list] : [abl] 匹配 abl中任意一個
? 2.[^xx]:對其中的字符進行取反?這里只能對的那個字符進行取反 若是希望是多個字符取反的話 還需要看看
? 3.[char1-char2]:匹配某個范圍之內的數據例如 [a-z][A-Z][0-9]
?
7.擴張的grep --- > egrep?這個等同于 grep -E?
?
grep -v '^$' pp | grep -v '^#'
通過egrep來表示就是
egrep -v '^$|^'
?
8.查找內容有“或”的關系:
#查找數字為23或24的內容,并顯示內容與行號
grep -E '23|24' * -n
?
9.查找data.txt文件有多少個空行:
grep '^$' data.txt -c
?
10.查詢當前目錄中還有多少個目錄:
ls -l | grep '^d'
?
11.查找data.txt文件字符串尾部為a的內容
grep 'a$' data.txt -i -n
?
$ grep "sort it" *? ? ? (#或在所有文件中查詢單詞“sort it”)
接下來的所有示例是指在單個文件中進行查詢
?行匹配
$ grep -c "48" data.f
$ 4? ? ? ? ? ? ? ? ? ? ? (#g r e p返回數字4,意義是有4行包含字符串“4 8”。)
$ grep "48" data.f? ? ? ? ? (#顯示包含“4 8”字符串的4行文本)
?顯示滿足匹配模式的所有行行數:
[root@mypc oid2000]# grep -n 1234 111.txt
1:1234
3:1234ab
6. 精確匹配
[root@mypc oid2000]# grep "1234\>" 111.txt
1234
7. 查詢空行,查詢以某個條件開頭或者結尾的行。
結合使用^和$可查詢空行。使用- n參數顯示實際行數
[root@mypc oid2000]# grep -n "^$" 111.txt? ? (返回結果 2: ? #說明第二行是空行)
[root@mypc oid2000]# grep -n "^abc" 111.txt (#查詢以abc開頭的行)
[root@mypc oid2000]# grep -n "abc$" 111.txt (#查詢以abc結尾的行)
8. 匹配特殊字符,查詢有特殊含義的字符,諸如$ . ' " * [] ^ | \ + ? ,必須在特定字符前加\。
[root@mypc oid2000]# grep "\." 111.txt (#在111.txt中查詢包含“.”的所有行)
[root@mypc oid2000]# grep "my\.conf" 111.txt (#查詢有文件名my. c o n f的行)
9. 目錄的查詢
[root@mypc oid2000]# ls –l |grep “^d” ? (#如果要查詢目錄列表中的目錄)
[root@mypc oid2000]# ls –l |grep “^d[d]” (#在一個目錄中查詢不包含目錄的所有文件)
[root@mypc]# ls –l |grep “^d…..x..x” (#查詢其他用戶和用戶組成員有可執行權限的目錄集合)
10.排除自身
ps -ef|grep telnet | grep -v grep (在顯示的進程中抽出“telnet”進程;并丟棄ps中的grep進程)
?
egrep的幾個特殊字符
+ :至少一個或是多個 ? egrep -n 'go+d' pp
?:0個或是一個? ? ? ? egrep -n 'go?d' pp
| :用或的方式來查找 ? egrep -n 'go|good' pp查找go或是good
():找出群組的數據? ? ? egrep -n 'g(o|pp)d' pp查看god 或是gppd? 這個類似于 []但是比[]強大的是可以是多個字符進行亂換
egrep -n 'd(r|o)e' pp? ===== grep -n 'd[ro]e' pp?
find -type f | xargs grep “resolv.conf”
grep -rn “teststring” ./*? ? 查找字符串
diff -r /root/iSmart1 /root/iSmart2 ? ? 比較文件夾
?diff 比較兩個文件夾 2010-11-19 21:12:37
分類: LINUX
[root@localhost ~]# diff -urNa dir1 dir2
-a? Treat? all? files? as text and compare them? ? ?
? ? line-by-line, even if they do not seem to be text.
-N, --new-file
? ? In? directory? comparison, if a file is found in
? ? only one directory, treat it as present but empty
? ? in the other directory.
-r? When comparing directories, recursively compare
? ? any subdirectories found.
-u? Use the unified output format.
linux下使用find xargs grep查找文件及文件內容
?
1,在某個路徑下查文件。
在/etc下查找“*.log”的文件
find /etc -name “*.log”
2,擴展,列出某個路徑下所有文件,包括子目錄。
find /etc -name “*”
3,在某個路徑下查找所有包含“hello abcserver”字符串的文件。
find /etc -name “*” | xargs grep “hello abcserver”
或者find /etc -name “*” | xargs grep “hello abcserver” > ./cqtest.txt
4,網上摘抄的幾個和查找文件或文件內容相關的命令詳說:
正則表達式
\分別表示單詞的開始和結束
ex: \ 以T或者t開頭,om結尾的單詞
正則表達式的元字符集:
1) ^行首 /^love/ 以love開頭的行;
2) $行尾 /love$/ 以love結尾的行;
3) .? ? /l..e/ 匹配所有這樣的行,字母l后面緊跟任意兩個字符然后是e的行
4) * 重復0次或者任意多次前面字符
5) [x-y] 字符范圍
6) [^x-y] 排除字符范圍
7) \ 轉義字符
8) \ 界定單詞的開頭和結尾
9) \( \) 標記后面用到的匹配字符 \(love\)able \1er=loveable lover
10) x\{m,n\} 重復字符x至少m此,至多n次
—————————————————————————
—————————————————————————
grep家族
RE–regular expression; g: global; p: print
出了上面10種元字符集,grep還支持下面的RE
\w 字母或者數字
\W 非單詞字符(標點符號)
+ 重復一個或者多個前面的字符
| 或 love(a:b)表示lovea或者lobeb
?單個字符
grep返回狀態值($?) 0表示成功,1表示失敗,2表示沒有找到文件
rgrep遞歸訪問目錄樹
—————————————————————————
ls -l |grep ^d 顯示目錄
grep -n -v -# -A# -B#
-i 不區分大小寫
-n 顯示匹配行和行號
-v只顯示不匹配行
-#顯示匹配行上下#行
-A#匹配行后面打印#行
-B#匹配行前面打印#行
-c 只輸出匹配行的行數
-h 查詢多文件的時候不顯示匹配的文件名字
-l 查詢多文件只顯示匹配的文件名
-s 不顯示錯誤信息
grep與正則表達式同用
grep “^[^abc]” *.f 提取行首不是abc的行
grep “[0-9]\{3\}[8]” *.f 提取類似xxx8的行,x表示任意數字
grep “a\{2\}” *.f 顯示a至少出現兩次的行,注意grep是以行處理單位的
grep -n “^$” file 列出空行的行號
-E參數,可以使用”與”和”或”模式
grep -E “abc | def” *.f 顯示包含abc或者def的行
ex:
ls -l | grep “^$” 顯示目錄
ls -l | grep “^d” 顯示文件
ls -l | grep “^d..x..x..x” 顯示特定權限的目錄
ps aux | grep “httpd” |grep -v “grep”
—————————————————————————
—————————————————————————
**使用find和xargs
1. find pathname -options [-print -exec -ok]
-optinos
1)-name:按照文件名查找
find ~ -name “*.txt” -print
find ~ -name “[a-z][0-9].txt” -print
2)-perm:按照權限查找文件
find ~ -perm 755 -print 查找權限為755的文件
find ~ -perm 007 -print 查找o位置上具有7權限的文件
find ~ -perm 4000 -print 查找具有suid的文件
3)-prune
不在當前目錄下查找
4)-user和-nouser
find ~ -user zhao -print 查找文件屬主是zhao的文件
find ~ -nouser -print 查找文件屬主已經被刪除的文件
5)-group和-nogroup
find ~ -group zhao -print 查找文件群組是zhao的文件
6)按照時間
find ~ -mtime -5 -print 文件更改時間在5天內的文件
find ~ -mtime +3 -print 文件更改時間在3天前的文件
find ~ -newer file1 -print 查找比文件file1新的文件
7)按照類型查找
find ~ -type d -print 查找所有目錄
8)按照大小
find ~ -size +1000000C -print 查找文件大小大于1000000字節(1M)的文件
9)查找位于本文件系統里面的文件
find / -name “*.txt” -mount -print
-exec,-ok:find命令對于匹配文件執行該參數所給出shell命令,相應命令形式為: ‘command’ {} \;
-ok 在執行命令前要確認
find ~ -type f -exec ls -l {} \;
find / -name “*.log” -mtime +5 -ok rm {} \;
find . -name core -exec rm {} \;
使用-x dev參數
防止find搜索其他分區
find . -size 0 -exec rm {} \;
刪除尺寸為0的文件
2. xargs與-exec功能類似
find ~ -type f | xargs ls -l
find / -name “*.log” -type f -print| xargs grep -i DB0
find . -type f |xargs grep -i “Mary”
在所有文件中檢索字符串Mary
ls *~ |xargs rm -rf
刪除所有以~結尾的文件
—————————————————————————
—————————————————————————
SED:
=====
sed [options] sedcommand inputfile >outputfile
sed不接觸初始輸入文件,對其不做修改,若想保存改動,重要將輸出重定向到一個文件即可
a\: 當前行后面加入一行或者文本
c\: 用信文本替換本行的文本
d: 刪除一行
D: 刪除模板塊的第一行
i\: 在當前行上面插入文本
h: 拷貝模板塊的內容到內存緩沖區
H: 追加模板塊的內容到內存緩沖區
g: 獲得內存緩沖區內容,并替換當前模板中的文本
G: 獲得內存緩沖區內容,并追加到當前模版塊文本的后面
n: 讀取下一個輸入行,用下一個命令處理新行而不是第一個命令
N: 追加下一個輸入行到模版塊后面,并在二者間插入一個新行,改變當前行的號碼
p: 打印模板塊的行
P: 打印模板塊的地一行
q: 退出sed
r file: 從file中讀行
!: 表示后面的命令對所有沒有選中的行起作用
s/re/strint/: 用string替換正則表達式re
=: 打印當前行號
#command: 把注釋擴展到下一個換行符號前
l 打印匹配行,包括顯示控制符號
**替換標記
g: 行內全部替換
p: 打印行
w: 把行寫入一個文件
x: 互換模板塊和緩沖區中的文本
y: 把一個字符翻譯成另外一個字符
**sed中元字符可以使用正則表達式中所有的
新加:
& 保存搜索字符 s/love/**&**/ 用**love**代替love
**sed定位文本的方式
x 行號
x-y 從x行到y行
/patern/ 查詢包括patern的行
x,y! 不包括指定x-y行號的行
ex:
sed ‘/Tom/d’ file
刪除包含Tom的行;
sed ‘/Tom/!d’ file
刪除所有不包含Tom的行;
sed -n /north/p’ file
打印包含north的行;
sed ‘3d’ file
刪除第三行;
sed ’3,$d’ file
刪除第三行到最后一行;
sed ‘$d’ file
刪除最后一行;
sed ‘/north/d’ file
刪除包含north的行;
sed -n ‘s/west/north/g’ file
替換所有west為north;
sed -n ‘s/^west/north/p’ file
一行的開頭的west用north替換,并打印發生替換的行;
sed ‘s/[0-9][0-9]$/&.5/’ file
所有以兩個數字結尾的行,最后兩個數字被他們自己替換并附加.5;
sed -n ‘s/\(Mar\)got/\1ianne/p’ file
將Margot替換為Marianne,并打印發生替換的行;
sed ‘s#abc#ABC#g’ file
所有abc由ABC替換,(所有s后面緊跟的字符都被認為是新的分隔符);
sed ‘/west/,/east/p’ file
打印包含west行和包含east行中間的所有行;
sed ’1,/east/s/$/**A**/’ file
地一行和包含east行之間的所有行的行尾加上字符串**A**;
sed -e ’1,3d’ -e ‘s/aa/bb/’ file
先刪除1到3行,然后用bb替換aa;
sed ‘/Sam/r file1′ file
將文件file1中的內容附加在包含Sam的行后面;
sed ‘/Sam/w file1′ file
將還有Sam行寫入文件file1中;
sed ‘/^north /a\new line second line’ file
所有以north加空格開頭的行后面附加上兩行文本,a\表示追加文本,\表示換行(tcsh中需要,bash中不需要);
sed ‘/^north/i\new line’ file
在行首為north的行前面插入一個新行;
sed ‘/norht/{n; s/aa/bb/;}’ file
首先匹配含有north的行,然后執行一組命令,n表示移到下一行,并用bb代替aa;
sed ’1,3g/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/’ file
將1到3行中的所有小寫字母用大寫字母替換;
sed ‘/Lewis/{s/Lewis/bbb;q;}’ file
首先找到匹配Lewis的行,然后用bbb代替Lewis,接著q退出seq;
sed -e ‘/north/h’ -e ‘$G’ file
首先找到包含norht的行,h拷貝到內存緩沖區,然后到文件隨后一行($),G附加在最后一行后面;
sed -e ‘/we/{h;d;}’ -e ‘/ct/{G:}’ file
查找包含we的行,拷貝并且刪除他,然后查找包含ct的行,將拷貝內容附加到他后面;
sed -e ‘/north/h’ -e ‘$g’ file
首先找到包含norht的行,h拷貝到內存緩沖區,然后到文件隨后一行并覆蓋他;
sed -n ‘l’ file
打印所有包含不能打印字符的行。
sed -n ‘/.*ing/p’ file
顯示含有以ing結尾單詞的行;
sed -n ‘/music/=’ file
打印含有music的行號;
sed ‘^$d’ file
刪除空行
sed ‘s/^/abcd/g’ file
在行首填加abcd
sed ‘s/$/abcd/g’ file
在行尾填加abcd
sed ‘s/rm$/played &/g’ file
&表示在替換的時候保留被替換的詞(rm–played rm)
sed ‘s/^M//g’ file
去掉行尾的^M (^M的輸入,先按ctrl+v然后按enter即可即可)
—————————————————————————
—————————————————————————
gawk程序:
awk [-F 域分隔符] ‘commands’ inputfile
awk執行時,其域標志符為$1,$2,$3………$n,$0表示所有的域
awk -v var=value 賦值給一個用戶定義的變量
awk ‘pattern’ file
awk ‘{action}’ file
awk ‘pattern {action}’ file
ex:
awk ‘{print $0}’ file
打印所有的域
awk ‘/Mary/’ file
打印包含file中包含Mary的行;
awk ‘{print $1}’ file
打印文件的第一列(第一個域);
awk ‘/Mary/ {print $1,$2}’ file
打印文件file包含Mary的行的第一和第二個域;
df | awk ‘S4>75000′
打印可用空間大于75000的文件系統
date | awk ‘{print ” month:”, $2, “\n year:” $6}’
格式化date的輸出;
awk ‘BEGIN{OFMT=”%.2f”; print 1.25463}’
指定數字輸出格式,小數點后面保留兩位有效數(1.25);
awk ‘/[ab]cdef/’ file
打印匹配acdef或者bcdef的行;
awk ‘{print NR, $0}’ file
awk ‘{print $0, NR}’ file
NR當前記錄數,每處理一個記錄NR就加1
上面的命令相當于在每一行后面加上一個行號;
NF則記錄每一行的域的個數;
awk -F ‘[ :\t]‘ ‘{print $0}’ file
指定域分隔符為空格、:或者tab
awk ‘/^[A-Z][a-z]+/’ file
打印所有以一個大寫字母開頭,然后是一個或者多個小寫字母的行;
awk ‘$1~/[Bb]ill/’ file
第一個域匹配Bill或者bill的行;
awk ‘$1!~/ly$/’ file
第一個域末尾不是ly的行;
awk ‘/^(No|no)/’ file
打印行首為No或者no的行;
awk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ file
awk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ file |tee out.file
打印文件的時候附加一個文件頭
awk ‘BEGIN {print “file head \n”} {print $1 \t $4} END {print “end of file”}’ file
打印文件的時候附加一個文件頭和文件尾
awk中使用正則表達式
awk ‘{if($1~/hello/) print $0}’ file
如果域1中包含hello,就打印所有的域
~//表示匹配正則表達式,!~//表示不匹配正則表達式
awk ‘{if($6,>=,==,!=,~,!~(匹配,不匹配)
awk ‘$3==5346′ file
第三個域等于5346,就打印出該行;
awk ‘$3>5000 {print $1}’ file
第三個域大于5000就打印該行第一個域
awk ‘{max={$1>$2}?$1:$2; print max}’ file
如果第一個域大于第二個域,max=$1否則=$2,打印最大值
awk ‘{print ($1==11?”high\t” $2:”low\t” $2)}’ file
&&邏輯和,||邏輯或,!邏輯非
awk ‘$2==$5 && $3>5′ file
awk ‘/Tom/,/Jary/’ file
Tom第一次出現和Jary第一次出現之間的所有行;
awk ‘/north/ {print $3+10}’ file
包含north行的地三個域加10;
awk ‘$3==”aa” {$2=”dd”; print $0}’ file
將地三個域為aa的行的第二域變成dd,并打印該行;
**awk編程:
使用變量
awk ‘$1~/Tom/ {wage=$2+$3; print wage}’ file
先掃描第一個域,如果匹配Tom,就將第二和第三域的總和賦值給變量wage并輸出;
awk ‘BEGIN{FS=”:”; OFS=”\t”;ORS=”\n\n”}{print $0}’ file
處理文件前設置
域分隔符(FS)為(:)
輸出域分隔(OFS)為(\t)
輸出記錄分隔符(ORS)為(\n\n)
awk ‘END{print “The number of record is:’ NR}’ file
處理完文件后執行END語句
輸出總記錄數
awk ‘/Mary/{count++} END{print “Mary was found” count “times”}’ file
計數文件中Mary出現的次數;
**awk輸入輸出重定向
awk ‘$4>=70 {print $1, $2 >”outfile”}’ file
結果重定向到文件outfile中
awk ‘BEGIN{“date” |getline d; print d}’
將date結果輸給getline函數,并打印
(getline從標準輸出,管道等獲得輸入)
awk ‘BEGIN{“date” |getline d; split(d,mon); print mon[1] mon[2]}’
將date結果輸給getline函數,slpit將d分解成數組,打印數組第2個變量
**split函數:split(string,array,field seperator)
awk ‘BEGIN{while(“ls”|getline) print}’
依次輸出ls的每一項
awk
‘BEGIN{print “what is your name?”; getline name 0) {lc++; print lc ” ” a}}’
awk ‘BEGIN{while(getline a 0) {lc++; print lc}}’
如果文件不存在,getline返回-1
到達文件尾返回0
讀到一行返回1
讀取文件/etc/passwd,計數行數
**awk控制語句
if語句:
awk ‘{if($6>50) print $1 “too high”}’ file
awk ‘{if($6>20 && $250}{x++; print x} else {y++;print y}’ file
awk ‘{if($1~/peter/){next} else {print}}’ file
如果第一個域包含peter,awk就忽略這一行,讀取文件的下一行,腳本從頭開始執行;
循環語句:
awk ‘{i=1; while(i file
cat -v file 顯示文件,包括其中的控制符(-v)
cat -n file 為每一行編號
cat -b file 每個非空行編號
cat -T file 以^I顯示tab
3.
管道 | 把一個命令的輸出傳遞給另外一個命令為輸入
ex:
ls | grep file.doc
查找文件file.doc
who | awk ‘{print $1 “\t” $2}’ 只顯示用戶名和所在終端
df -h | awk ‘{print $1}’ |grep -v “filesystem” (-v表示輸出不包括filesystem的項目)
df -h | awk ‘{print $1}’ |grep -v “filesystem” |sed ‘s/\/dev\///g’ 顯示設備的時候不顯示/dev/
4.tee
who | tee who.txt 輸出到屏幕的同時輸出到文件
who | tee -a who.txt 附加在文件的后面
5.文件重定向
ls -l |grep ^d >file.out 所有目錄名字重定向到一個文件
cat /etc/passwd | awk -F: ‘{print $1}’ |sort >a.out (-F:指定分隔符為:)
cat >file.out reboot
at> ctrl+D
3小時后reboot
3.
bc – 計算器
scale=3 設置小數點后數字為數
ibase=2 二進制運算
4.
ls -d dir
只顯示目錄而不顯示其下面的文件。
5.
sync
更新superblock并把它寫入硬盤
6.
scp user@host:/path/file1 user@host:/path/file
服務器間拷貝文件
Linux xargs命令
xargs是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。它把一個數據流分割為一些足夠小的塊,以方便過濾器和命令進行處理。通常情況下,xargs從管道或者stdin中讀取數據,但是它也能夠從文件的輸出中讀取數據。xargs的默認命令是echo,這意味著通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。
xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然后傳遞給另外一個命令,下面是一些如何有效使用xargs 的實用例子。
1. 當你嘗試用rm 刪除太多的文件,你可能得到一個錯誤信息:/bin/rm Argument list too long. 用xargs 去避免這個問題
find ~ -name ‘*.log’ -print0 | xargs -0 rm -f
2. 獲得/etc/ 下所有*.conf 結尾的文件列表,有幾種不同的方法能得到相同的結果,下面的例子僅僅是示范怎么實用xargs ,在這個例子中實用 xargs將find 命令的輸出傳遞給ls -l
# find /etc -name "*.conf" | xargs ls –l
3. 假如你有一個文件包含了很多你希望下載的URL, 你能夠使用xargs 下載所有鏈接
# cat url-list.txt | xargs wget –c
4. 查找所有的jpg 文件,并且壓縮它
# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
5. 拷貝所有的圖片文件到一個外部的硬盤驅動?
# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
EXAMPLES
find /tmp -name core -type f -print | xargs /bin/rm -f
Find files named core in or below the directory /tmp and delete them.? Note that this will work incorrectly if there are any filenames containing newlines or spaces.
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Find? files? named core in or below the directory /tmp and delete them, processing filenames in such a way that file or directory names containing spaces or newlines are correctly handled.
find /tmp -depth -name core -type f -delete
Find files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example (because we avoid the need to use fork(2) and exec(2) to launch rm and we don't need the extra xargs process).
cut -d: -f1 < /etc/passwd | sort | xargs echo
Generates a compact listing of all the users on the system.
xargs sh -c 'emacs "$@" < /dev/tty' emacs
Launches the minimum number of copies of Emacs needed, one after the other, to edit the files listed on xargs' standard input.? This example achieves the same effect as BSD's -o option, but in a more flexible and portable way.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
- 上一篇: 多囊卵巢可以做试管婴儿吗
- 下一篇: 武林外传剧情介绍