linux 管道使用方法,Linux 管道命令
cut
在一行中取出部分?jǐn)?shù)據(jù),以行為單位
cut -d '分隔符 ' -f fields
$ pwd /home/users/chenzhaoqun
$ pwd | cut -d '/' -f 1
$ pwd | cut -d '/' -f 2
home
$ pwd | cut -d '/' -f 3
users
$ pwd | cut -d '/' -f 4
chenzhaoqun
$ pwd | cut -d '/' -f 3,4
users/chenzhaoqun
cut -c 字符范圍
以字符為單位取出固定字符區(qū)間
$ export
declare -x ANT_HOME="/home/tools/tools/ant/apache-ant-1.6.5"
declare -x ANT_HOME_1_7="/home/tools/tools/ant/apache-ant-1.7.1" declare -x G_BROKEN_FILENAMES="1"
$ export | cut -c 12-
ANT_HOME="/home/tools/tools/ant/apache-ant-1.6.5" ANT_HOME_1_7="/home/tools/tools/ant/apache-ant-1.7.1" G_BROKEN_FILENAMES="1"
$ export | cut -c 12-15
ANT_
ANT_
G_BR
grep
分析一行,有我們需要的信息就將該行拿出來
grep [-acinv] [--color=auto] '查詢字符串' filename
-a
將二進(jìn)制文件以text方式查詢
-c
計(jì)算找到字符串的次數(shù)
-i
忽略大小寫
-n
輸出行號(hào)
-v
反向選擇,顯示不包含‘查詢字符串’的行
表2-1 grep使用的正則表達(dá)式元字符
元字符
功能
示例
匹配對(duì)象
^
行首定位符
‘^love’
匹配所有以love開頭的行
$
行尾定位符
‘love$’
匹配所有以love結(jié)尾的行
.
匹配單個(gè)字符
‘l..e’
匹配包含一個(gè)l,后面跟兩個(gè)字符,再跟一個(gè)e的行
*
匹配0或者多個(gè)重復(fù)的位于*前的字符
‘*love’
匹配包含跟在0個(gè)或者多個(gè)字符后的love的行
[]
匹配一組字符中的任意一個(gè)
‘[Ll]ove’
匹配Love或者love
[^]
匹配不在指定組內(nèi)的字符
’[^A-Z]’
匹配不在范圍A至Z之間的任意一個(gè)字符
<
詞首定位符
’
匹配包含以love開頭的詞的行
<
詞尾定位符
‘love/>’
匹配包含以love結(jié)尾的詞的行
(..)
標(biāo)記匹配到的字符
’(love)ing’
模式love被保存在1號(hào)寄存器中,之后可用\1引用它
x{m}或x{m,}或x{m,n}
字符x的重復(fù)次數(shù):m次、至少m次、至少m次但不超過n次
‘o{5}’,’o{5,}’ ,’o{5,10}’
匹配連續(xù)出現(xiàn)5個(gè)o、至少5個(gè)o或者5~10個(gè)o的行
其他方法:
1、使用多個(gè) -e 參數(shù)
如:netstat -an | grep -E "ESTABLISHED|WAIT"
注意:netstat -an | grep -e EST -e WAIT 并列使用多個(gè) -e參數(shù)可以實(shí)現(xiàn)或條件
2、使用擴(kuò)展
如:netstat -an | grep -E "ESTABLISHED|WAIT"
注意:此處的 -E 是大寫 ,匹配條件一定要加 引號(hào)
sort
sort [-fbMnrtuk] [file or stdin]
-f
忽略大小寫
-b
忽略行前的空格
-M
以月份的名字來排序,JAN > DEC
-n
使用“純數(shù)字”排序
-r
反向排序
-u
uniq
-t
指定分隔符,默認(rèn)是TAB
-k
以分割之后的哪個(gè)field來排序
uniq
uniq [-ic]
-i
忽略大小寫
-c
進(jìn)行計(jì)數(shù)
$ last | cut -d ' ' -f1 | sort | uniq -c | sort -r -n
345 root
171 duanzhib
126 zouxidon
68 zhouqian
68 chenzhao
37 wangjinl
35 jiangwei
last命令列出最近登錄的用戶列表
第一列為用戶名
最后的結(jié)果是按登錄次數(shù)逆序的排名
綜合使用案例:
一個(gè)文件similog中有很多行:
debug:[一汽%20夏利n5,一汽%20夏利n5][1,2] simi 100, interval 16
想要把simi后面的分?jǐn)?shù)取出來,并統(tǒng)計(jì)分布
cat similog | cut -d ']' -f 3 | cut -d ' ' -f 3 | tr -d ',' | sort -n | uniq -c
cat similog 不解釋
cut -d ']' -f 3 取出 simi 100, interval 16
cut -d ' ' -f 3 取出100,
tr -d ',' 刪除,
sort -n 排序
uniq -c 統(tǒng)計(jì)出現(xiàn)的次數(shù)
tee
tee [-a] file
-a 對(duì)file進(jìn)行續(xù)寫,append文件模式
tee是將stdout轉(zhuǎn)存一份到文件,又不影響stdout的輸出,后面還可以被其他命令處理
字符轉(zhuǎn)換命令 tr col join paste expand
tr [-ds] SET1 [SET2]
參數(shù)
解釋
-d
刪除str
-s
替換掉重復(fù)的字符
-t
將SET1按SET2的長(zhǎng)度截?cái)?/p>
tr '[a-z]' '[A-Z]'
upper case
col [-xb]
參數(shù)
解釋
-x
將tab轉(zhuǎn)成空格
-b
將/,僅保留/最后接的字符
join [-ti12] file1 file2
將兩個(gè)文件的按照第一列合并
參數(shù)
解釋
-t
指定列分隔符,默認(rèn)是空格
-i
忽略大小寫
-1 n
對(duì)文件1按第n列比較
-2 n
對(duì)文件2按第n列比較
join -1 3 file1 -2 4 file2
這是file1的第3列和file2的第4列,就會(huì)合并,然后放到第1列,后面接剩余的數(shù)據(jù)
注意:對(duì)比時(shí)兩文件要sort
paste [-d] file1 file2
將兩個(gè)文件的每行合并成一行,中間被分隔符分割
參數(shù)
解釋
-d
指定分隔符
把file寫成- 表示來自std input的意思
expand [-t] file
將tab轉(zhuǎn)成空格,-t指定轉(zhuǎn)成空格的個(gè)數(shù)
split
split [-bl] file PREFIX
將一個(gè)大文件切割成指定大小或指定行的小文件
參數(shù)
解釋
-b
按大小分割,可加單位,b, k, m
-l
按行數(shù)分割
PREFIX
分割后文件名的前綴
-a
suffix length,默認(rèn)為2,且是aa,ab,ac…命名
-d
以數(shù)字作為后綴
文件合并
使用重定向
如將file1,file2,file3合并成file
cat file1 file2 file3 >> file
cat file* >> file
xargs
xargs [-0epn] command
為command生成參數(shù),并且執(zhí)行command
因?yàn)橛行ヽommand不支持直接使用管道,可以從stdin讀入,使用空格分割,然后作為command的參數(shù)執(zhí)行
參數(shù)
解釋
-0
還原stdin中的特殊字符,如 ` \ 空格等,為一般字符
-e
后面接一個(gè)字符串,xargs分析到該字符串時(shí)就停止,該字符串不會(huì)被使用
-p
每次執(zhí)行command,都詢問
-n
command使用n個(gè)參數(shù),更多的都會(huì)忽略
- 減號(hào)
可以用-表示stdin或stdout,放在應(yīng)該寫file的地方
總結(jié)
以上是生活随笔為你收集整理的linux 管道使用方法,Linux 管道命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美团月付怎么开通 不喜欢也可以选关闭
- 下一篇: linux permit用法,技术|12