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