Linux 命令: cut 和 tr

1. 寫在前面

本文主要介紹:Linux "cut "和 “tr” 命令行實用程序概述;

公眾號: 滑翔的紙飛機

2. Linux 命令: cut

“cut” 命令是一種命令行工具,允許我們剪切指定文件或管道數據的部分內容,并將結果打印到標準輸出。

root@dev:~# man cut
-------------------------------------------------------
NAMEcut - remove sections from each line of files
SYNOPSIScut OPTION... [FILE]...
... ...       
-b, --bytes=LISTselect only these bytes
-c, --characters=LISTselect only these characters
-d, --delimiter=DELIMuse DELIM instead of TAB for field delimiter
... ...           

下面是一個文本文件:讓我們看看如何操作下面的文本文件,以根據需要打印輸出。

test.txt:

Nov 15 00:13:08 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.10000000-0000-0000-0000-000000000000[1938]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.01000000-0000-0000-0000-000000000000[1936]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.06000000-0200-0000-0000-000000000000[1935]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.04000000-0200-0000-0000-000000000000[1939]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.05000000-0600-0000-0000-000000000000[1940]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.08000000-0100-0000-0000-000000000000[1941]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.0D000000-0200-0000-0000-000000000000[1917]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.0E000000-0400-0000-0000-000000000000[1937]): Service exited due to SIGKILL | sent by mds[98]

2.1 按字符范圍打印

在一定字符范圍內打印輸出 :

范圍:1 - 5

root@dev:~# cut -c 1-5 test.txt 
-------------------------------------------------------
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1

范圍:21 - 40

root@dev:~# cut -c 21-40 test.txt 
-------------------------------------------------------
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch

范圍:70 - end

root@dev:~# cut -c 76-  test.txt 
-------------------------------------------------------
00000-0000-0000-0000-000000000000[1938]): Service exited due to SIGKILL | sent by mds[98]
00000-0000-0000-0000-000000000000[1936]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1935]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1939]): Service exited due to SIGKILL | sent by mds[98]
00000-0600-0000-0000-000000000000[1940]): Service exited due to SIGKILL | sent by mds[98]
00000-0100-0000-0000-000000000000[1941]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1917]): Service exited due to SIGKILL | sent by mds[98]
00000-0400-0000-0000-000000000000[1937]): Service exited due to SIGKILL | sent by mds[98]

2.2 按字段名打印

假設我們想根據字段從以下文件中提取數據。

test.txt:

NAME EMAIL PHONE ADDRESS
devid devid@text.com 0897663232 beijin,china
harry harry@text.com 0232323232 hangzhou,china
jane jane@text.com 0323213122 zhejiang,china

我們必須使用"-d = delimiter"選項(可以是一個字符,默認為 TAB)來分隔每個字段。然后,我們必須指定要打印的字段編號。

-d, --delimiter=DELIM   
-f, --fields=LIST >> cut -d ' ' -f1

在下面的演示中,我們使用空格(’ ')作為分隔符。

# 打印空格分割第1列
root@dev:~# cut -d ' ' -f1  test.txt 
-------------------------------------------------------
NAME
devid
harry
jane# 打印空格分割第2列
root@dev:~# cut -d ' ' -f2 test.txt 
-------------------------------------------------------
EMAIL
devid@text.com
harry@text.com
jane@text.com

打印多個字段:打印第1、3列

root@jpzhang-dev:~# cut -d ' ' -f1,3 test.txt 
-------------------------------------------------------
NAME PHONE
devid 0897663232
harry 0232323232
jane 0323213122

使用逗號 (, ) 作為分隔符:

root@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f1
--------------------------------------------------------------------
janeroot@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f2
--------------------------------------------------------------------
jane@devroot@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f3
--------------------------------------------------------------------12345678

3. Linux 命令: tr

Linux tr 命令用于轉換或刪除文件中的字符。
tr 指令從標準輸入設備讀取數據,經過字符串轉譯后,將結果輸出到標準輸出設備。

語法

tr [-cdst][--help][--version][第一字符集][第二字符集]  
tr [OPTION]…SET1[SET2] 

具體參數:

>> man tr
--------------------------------------------------------------------
tr [OPTION]... SET1 [SET2]
# Options
-c, -C, --complementuse the complement of SET1
-d, --deletedelete characters in SET1, do not translate
-s, --squeeze-repeatsreplace each sequence of a repeated character that is listed in the last specified SET, with a single occurrence of that character
-t, --truncate-set1first truncate SET1 to length of SET2
...
...

參數說明:

?	-c, --complement:反選設定字符。也就是符合 SET1 的部份不做處理,不符合的剩余部份才進行轉換  
?	-d, --delete:刪除指令字符  
?	-s, --squeeze-repeats:縮減連續重復的字符成指定的單個字符  
?	-t, --truncate-set1:削減 SET1 指定范圍,使之與 SET2 設定長度相等  
?	--help:顯示程序用法信息  
?	--version:顯示程序本身的版本信息  

字符集合范圍:

?	\NNN 八進制值的字符 NNN (1 to 3 為八進制值的字符)
?	\\ 反斜杠
?	\a Ctrl-G 鈴聲
?	\b Ctrl-H 退格符
?	\f Ctrl-L 走行換頁
?	\n Ctrl-J 新行
?	\r Ctrl-M 回車
?	\t Ctrl-I tab鍵
?	\v Ctrl-X 水平制表符
?	CHAR1-CHAR2 :字符范圍從 CHAR1 到 CHAR2 的指定,范圍的指定以 ASCII 碼的次序為基礎,只能由小到大,不能由大到小。
?	[CHAR*] :這是 SET2 專用的設定,功能是重復指定的字符到與 SET1 相同長度為止
?	[CHAR*REPEAT] :這也是 SET2 專用的設定,功能是重復指定的字符到設定的 REPEAT 次數為止(REPEAT 的數字采 8 進位制計算,以 0 為開始)
?	[:alnum:] :所有字母字符與數字
?	[:alpha:] :所有字母字符
?	[:blank:] :所有水平空格
?	[:cntrl:] :所有控制字符
?	[:digit:] :所有數字
?	[:graph:] :所有可打印的字符(不包含空格符)
?	[:lower:] :所有小寫字母
?	[:print:] :所有可打印的字符(包含空格符)
?	[:punct:] :所有標點字符
?	[:space:] :所有水平與垂直空格符
?	[:upper:] :所有大寫字母
?	[:xdigit:] :所有 16 進位制的數字
?	[=CHAR=] :所有符合指定的字符(等號里的 CHAR,代表你可自訂的字符)

3.1 替換字符

替換字符:‘H’ > ‘h’

root@dev:~# echo "Hello World" | tr 'H' 'h'
--------------------------------------------------------------------
hello World

替換字符:‘Ho’ > ‘xx’ 即 ‘H’ 或 ‘o’ 替換為 ‘x’

root@dev:~# echo "Hello World" | tr 'Ho' 'xx'
--------------------------------------------------------------------
xellx Wxrld

3.2 刪除字符

# 刪除 'H' 或 'o'
root@dev:~# echo "Hello World" | tr -d 'Ho'  
--------------------------------------------------------------------
ell Wrld# 反選,除'Hd\n'其他刪除
root@dev:~# echo "Hello World" | tr -cd 'Hd\n'
--------------------------------------------------------------------
Hd# 反選,除數字外其他刪除
root@dev:~# echo "Hello World 12345 " | tr -cd [:digit:]
--------------------------------------------------------------------
12345# 反選,除字母外其他刪除
root@dev:~# echo "Hello World 12345 " | tr -cd [:alpha:]
--------------------------------------------------------------------
HelloWorld

3.3 壓縮字符

# 壓縮指定重復字符
root@dev:~# echo "HHHHHHHHellooooo Woooorrrrrrrrrldddddddddddddddddd" | tr -s 'Hord' 
------------------------------------------------------------------------------------
Hello World
# 壓縮重復字符,小寫轉換大寫
root@dev:~# echo "Hello World" | tr -s [:lower:] [:upper:]
------------------------------------------------------------------------------------
HELO WORLD
感謝您花時間閱讀文章
關注公眾號不迷路

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160619.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSP內置對象

一、request對象 1、訪問請求參數 2、在作用域中管理屬性 3、獲取Cookie 4、解決中文亂碼 5、獲取客戶端信息 6、顯示國際化信息 是一個javax.servlet.http.HttpServletRequest對象 request封裝了用戶瀏覽器提交的信息,因此可以調用相應的方法可以獲取這些封…

優先經驗回放(prioritized experience replay)

prioritized experience replay 思路 優先經驗回放出自ICLR 2016的論文《prioritized experience replay》。 prioritized experience replay的作者們認為,按照一定的優先級來對經驗回放池中的樣本采樣,相比于隨機均勻的從經驗回放池中采樣的效率更高&…

UML建模圖文詳解教程——類圖

版權聲明 本文原創作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文參考資料:《UML面向對象分析、建模與設計(第2版)》呂云翔,趙天宇 著 類圖概述 類圖用來描述系統內各種實體的類型以及不同…

Unsupervised MVS論文筆記

Unsupervised MVS論文筆記 摘要1 引言2 相關工作3 實現方法 Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and …

JAVA小游戲拼圖

第一步是創建項目 項目名自擬 第二部創建個包名 來規范class 然后是創建類 創建一個代碼類 和一個運行類 代碼如下: package heima; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import …

10、信息打點——APP小程序篇抓包封包XP框架反編譯資產提取

APP信息搜集思路 外在——抓包封包——資產安全測試 抓包(Fiddle&茶杯&burp)封包(封包監聽工具),提取資源信息 資產收集——資源提取——ICO、MAD、hash——FOFA等網絡測繪進行資產搜集 外在——功能邏輯 內在…

國際版Amazon Lightsail的功能解析

Amazon Lightsail是一項易于使用的云服務,可為您提供部署應用程序或網站所需的一切,從而實現經濟高效且易于理解的月度計劃。它是部署簡單的工作負載、網站或開始使用亞馬遜云科技的理想選擇。 作為 AWS 免費套餐的一部分,可以免費開始使用 Amazon Lightsail。注冊…

【Python進階】近200頁md文檔14大體系第4篇:Python進程使用詳解(圖文演示)

本文從14大模塊展示了python高級用的應用。分別有Linux命令,多任務編程、網絡編程、Http協議和靜態Web編程、htmlcss、JavaScript、jQuery、MySql數據庫的各種用法、python的閉包和裝飾器、mini-web框架、正則表達式等相關文章的詳細講述。 Python全套筆記直接地址…

PostgreSQL10安裝postgis插件

1.安裝pgsql10 2.下載插件,以Windows為例,地址:Index of /postgis/windows/pg10/ 3.安裝插件,直接安裝,和pgsql的目錄相同即可,一直下一步 4.安裝之后,需要執行sql打開 CREATE EXTENSION po…

028 - STM32學習筆記 - ADC結構體學習(二)

028 - STM32學習筆記 - 結構體學習(二) 上節對ADC基礎知識進行了學習,這節在了解一下ADC相關的結構體。 一、ADC初始化結構體 在標準庫函數中基本上對于外設都有一個初始化結構體xx_InitTypeDef(其中xx為外設名,例如…

Redis設計與實現-數據結構(建設進度17%)

Redis數據結構 引言數據結構stringSDS數據結構原生string的不足 hash 本博客基于《Redis設計與實現》進行整理和補充,該書依賴于Redis 3.0版本,但是Redis6.0版本在一些底層實現上仍然沒有明顯的變動,因此本文將在該書的基礎上,對于…

PostgreSQL基本操作

1.查詢某個表的所在磁盤大小 select pg_size_pretty(pg_relation_size(grb_grid)); 2.插入point類型的記錄 insert into tb_person ("name", "address", "location", "create_time", "area", "girls") values …

Java 兩個線程交替打印1-100

線程題:交替打印1-100 這里演示兩個線程,一個打印奇數,一個打印偶數 方式一:synchronized FixedThreadPool public class example {private static int count 1;private static final Object lock new Object();public stat…

WPF基礎DataGrid控件

WPF DataGrid 是一個用于顯示和編輯表格數據的強大控件。它提供了豐富的功能,包括排序、篩選、分組、編輯、選擇等,使你能夠以類似電子表格的方式呈現和操作數據。 DataGrid 的布局主要由以下部分組成: 列定義 (Columns): DataGrid 列定義了…

YOLO目標檢測——衛星遙感多類別檢測數據集下載分享【含對應voc、coco和yolo三種格式標簽】

實際項目應用:衛星遙感目標檢測數據集說明:衛星遙感多類別檢測數據集,真實場景的高質量圖片數據,數據場景豐富,含網球場、棒球場、籃球場、田徑場、儲罐、車輛、橋、飛機、船等類別標簽說明:使用lableimg標…

2023年【上海市安全員C證】考試及上海市安全員C證找解析

題庫來源:安全生產模擬考試一點通公眾號小程序 2023年上海市安全員C證考試為正在備考上海市安全員C證操作證的學員準備的理論考試專題,每個月更新的上海市安全員C證找解析祝您順利通過上海市安全員C證考試。 1、【多選題】2017年9月頒發的《中共上海市委…

基于STM32的煙霧濃度檢測報警仿真設計(仿真+程序+講解視頻)

這里寫目錄標題 📑1.主要功能📑2.仿真📑3. 程序📑4. 資料清單&下載鏈接📑[資料下載鏈接](https://docs.qq.com/doc/DS0VHTmxmUHBtVGVP) 基于STM32的煙霧濃度檢測報警仿真設計(仿真程序講解) 仿真圖prot…

【數據結構】B : DS圖應用--最短路徑

B : DS圖應用–最短路徑 文章目錄 B : DS圖應用--最短路徑DescriptionInputOutputSampleInput Output 解題思路:初始化主循環心得: AC代碼 Description 給出一個圖的鄰接矩陣,再給出指定頂點v0,求頂點v0到其他頂點的最短路徑 In…

SkyWalking配置報警推送到企業微信

1、先在企業微信群里創建一個機器人,復制webhook的地址: 2、找到SkyWalking部署位置的alarm-settings.yml文件 編輯,在最后面加上此段配置 !!!一定格式要對,不然一直報警報不出來按照網上指導…

JVM 堆外內存詳解

Java 進程內存占用除了JVM 運行時數據區,還有直接內存(Direct Memory)區域及 JVM 程序自身也會占用內存 直接內存(Direct Memory)區域:直接內存通過使用Native堆外內存來存儲數據,這意味著數據…