Linux 命令之 cut
生活随笔
收集整理的這篇文章主要介紹了
Linux 命令之 cut
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
cut是一個選取命令,就是將一段數據經過分析,取出我們想要的。一般來說,選取信息通常是針對“行”來進行分析的,并不是整篇信息分析的。
語法格式: cut ?[-bn] [file] 或 cut [-c] [file] ?或 ?cut [-df] [file]使用說明: cut 命令從文件的每一行剪切字節、字符和字段并將這些字節、字符和字段寫至標準輸出。 如果不指定 File 參數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標志之一。主要參數:-b :以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了 -n 標志。-c :以字符為單位進行分割。-d :自定義分隔符,默認為制表符。-f :與-d一起使用,指定顯示哪個區域。-n :取消分割多字節字符。僅和 -b 標志一起使用。如果字符的最后一個字節落在由 -b 標志的 List 參數指示的<br />范圍之內,該字符將被寫出;否則,該字符將被排除。注:cut命令如果使用了-b選項,那么執行命令時,cut會先把-b后面所有的定位進行從小到大排序,然后再提取。例如who|cut -b 8,3-5-3表示從第一個字節到第三個字節,而3-表示從第三個字節到行尾。
如果執行who|cut -b -3,3-,是輸出整行,不會出現連續兩個重疊的c的。
[rocrocket@rocrocket programming]$ who|cut -b -3,3- rocrocket :0?????????? 2009-01-08 11:07 rocrocket pts/0??????? 2009-01-08 11:23 (:0.0) rocrocket pts/1??????? 2009-01-08 14:15 (:0.0)[rocrocket@rocrocket programming]$ who|cut -c 3-5,8 croe croe croe輸出中文時,用-c則會以字符為單位,輸出正常;而-b只會傻傻的以字節(8位二進制位)來計算,輸出就是亂碼。當遇到多字節字符時,可以使用-n選項,-n用于告訴cut不要將多字節字符拆開。例如: cat cut_ch.txt |cut -nb 1,2,3
如果遇到空格和制表符時,怎么分辨呢?
[rocrocket@rocrocket programming]$ cat tab_space.txt this is tab finish. this is several space????? finish.[rocrocket@rocrocket programming]$ sed -n l tab_space.txt this is tab\tfinish.$ this is several space????? finish.$如果是制表符(TAB),那么會顯示為\t符號,如果是空格,就會原樣顯示。
注意,上面sed -n后面的字符是L的小寫字母,不要看錯。
cut的-d選項的默認間隔符就是制表符,所以當你就是要使用制表符的時候,完全就可以省略-d選項,而直接用-f來取域就可以了。如果你設定一個空格為間隔符,那么就這樣:
[rocrocket@rocrocket programming]$ cat tab_space.txt |cut -d ' ' -f 1 this注意,兩個單引號之間可確實要有一個空格,而且,你只能在-d后面設置一個空格,可不許設置多個空格,因為cut只允許間隔符是一個字符。如果文件里面的某些域是由若干個空格來間隔的,那么用cut就有點麻煩了,因為cut只擅長處理“以一個字符間隔”的文本內容,解決辦法
# 使用cut之前加 sed 's/[ ][ ]*/ /g'# 如果空格與tab共存時用 sed -e 's/[[:space:]][[:space:]]*/ /g' filename總結
以上是生活随笔為你收集整理的Linux 命令之 cut的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 月薪30K的软件测试简历怎么包装,软件测
- 下一篇: 串口可视化软件