自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用tr命令輕松實現(xiàn)大小寫轉(zhuǎn)換

系統(tǒng) Linux
系統(tǒng)工程師有時候在系統(tǒng)維護的時候,需要將某個文件中的內(nèi)容進行大小寫的轉(zhuǎn)換。如系統(tǒng)工程師從網(wǎng)上下載了一個腳本文件。但是腳本文件的主人有個怪癖,對于一些備注的內(nèi)容希望采用大寫字母來描述。這可能跟某些工程師的閱讀習(xí)慣不一致。

 系統(tǒng)工程師有時候在系統(tǒng)維護的時候,需要將某個文件中的內(nèi)容進行大小寫的轉(zhuǎn)換。如系統(tǒng)工程師從網(wǎng)上下載了一個腳本文件。但是腳本文件的主人有個怪癖,對于一些備注的內(nèi)容希望采用大寫字母來描述。這可能跟某些工程師的閱讀習(xí)慣不一致。為此需要將這些大寫字符轉(zhuǎn)換寫小寫字母。當(dāng)然,系統(tǒng)工程師可以手工的一個個進行修改。但是,顯然操作起來很麻煩。為此系統(tǒng)工程師就會想,在Unix操作系統(tǒng)中是否提供了類似的工具,可以將大寫字符轉(zhuǎn)換為小寫字母呢?確實,在Unix操作系統(tǒng)中提供了一個tr命令。這是一個強盜的字符轉(zhuǎn)換命令,可以實現(xiàn)包括字符大小寫轉(zhuǎn)換在內(nèi)地很多功能。

  一、tr字符變換命令的基本格式格式要求。

  在Unix操作系統(tǒng)中,針對整行的內(nèi)容或者字段的命令有很多。相比之下,對一行中的字符進行操作的命令卻比較少。這并不是說對字符操作不重要。而是因為tr這個字符變換命令就可以實現(xiàn)大部分字符處理的功能。這個命令的主要功能就是對字符串進行替換。如下圖所示,筆者就是使用tr命令,先將一個文件中的字母a全部使用字母c來代替。然后第二個例子就是想文件中的小寫字符全部轉(zhuǎn)換為大寫字符。

這個命令的基本格式為tr 可選項 參數(shù)1 參數(shù)2 標(biāo)準(zhǔn)輸入

  這個命令的可選項雖然不是很多,但是都比較使用。通常搭配不同的可選項,可以實現(xiàn)不同的功能。另外在這個命令中,有一個比較特殊的部分,即標(biāo)準(zhǔn)輸出。這是什么意思呢?而且在這個命令中沒有文件名這個參數(shù)。那么如果將一個文件中的內(nèi)容轉(zhuǎn)換為英文字符呢?原來,這個命令只接受標(biāo)準(zhǔn)輸入,而不接受文件名作為參數(shù)。為此如果要將某個文件中的內(nèi)容進行大小寫轉(zhuǎn)換時,就需要按照上面的格式,先將文件中的內(nèi)容讀取出來,然后再利用管道符等工具將讀取出來的內(nèi)容傳遞給命令tr。然后再利用這個tr命令進行大小寫轉(zhuǎn)換或者進行簡單的字符替換。在使用標(biāo)準(zhǔn)輸入的時候,系統(tǒng)工程師即可以將標(biāo)準(zhǔn)輸入放在這個命令的尾部。也可以使用管道符將標(biāo)準(zhǔn)輸入放在命令的開頭。筆者比較喜歡的是將標(biāo)準(zhǔn)輸入放在命令開頭。這兩個方式都可以,沒有什么差異。主要是看系統(tǒng)工程師的習(xí)慣而定。

  二、實現(xiàn)大小寫轉(zhuǎn)換。

  筆者上面提到的第二個案例就是將文件text.txt中內(nèi)容進行大小寫轉(zhuǎn)換。將文件中所有小寫字符轉(zhuǎn)換成大寫。筆者采用的命令是head –n -2 text.txt | tr ‘[a-z]’ ‘[A-Z]’。由于這個命令不支持文件名作為其參數(shù),而支持標(biāo)準(zhǔn)輸入。為此筆者就用head命令讀取文件的前面幾行。由于一些腳本文件往往是將這個腳本的功能說明放置在文件的開頭,所以利用head命令來讀取文本的前面幾行是合理的。如此的話,就可以避免對整個腳本文件進行轉(zhuǎn)換。要知道shell對大小寫是敏感的。如果對一些命令和參數(shù)進行了一些不恰當(dāng)?shù)霓D(zhuǎn)換,有可能會出現(xiàn)莫名其妙的錯誤。為此只需要對腳本文件前面幾行的注釋部分進行大小寫轉(zhuǎn)換即可。

  另外筆者在這個命令中用到一些具有特殊意義的元字符,如[]等等。在參數(shù)中如果遇到元字符的話,往往需要采用轉(zhuǎn)義或者引用的機制,來告訴操作系統(tǒng)將這些字符當(dāng)作普通字符來對待。一般情況下,系統(tǒng)工程師如果對他們不需要進行變量取值或者命令替換時,必須要使用單引號等引用或者轉(zhuǎn)移字符。根據(jù)筆者上篇文章談到過的雙引號與單引號的相互保護作用,系統(tǒng)工程師還可以將命令中的表達式賦值給兩個變量。然后將變量放置在雙引號中,求其變量的值。

  三、替換某些特定的字符。

  在Unix操作系統(tǒng)中有一類比較特殊的文件,即lst文件。這個文件跟表格文件非常的類似,都是使用分隔符來分隔各個字段。默認(rèn)情況下,這個分隔符沒有固定的限制。如可以使用|符號來進行分隔,也可以使用空格符或者TAB鍵來進行分隔。也就算說,各位讀者可以根據(jù)自己的需要來設(shè)置分隔符。不過這給文件共享帶來了麻煩。因為一個文件按一定的分隔符號建立完成后,下次閱讀時就只能夠按照這個分隔符號。如果要采用其他的分隔符的話,就需要進行手工的調(diào)整?,F(xiàn)在假設(shè)一個項目團隊中的工程師A喜歡采用-分隔符,而另外一個工程師則喜歡采用|分隔符。那該怎么辦呢?難道需要一個個去更換呢?

  其實要實現(xiàn)這個轉(zhuǎn)換的方式還是比較多的。如可以使用查找命令配合循環(huán)語句,將這個文件中的所有-符號都轉(zhuǎn)換成|符號。不過利用循環(huán)語句與查找替換命令來實現(xiàn)這個功能的話有點復(fù)雜,并一定每個系統(tǒng)工程師都可以在短時間內(nèi)寫出這么復(fù)雜的語句。其實采用這個tr命令就可以輕松的將這件事情搞定。如利用tr ‘-‘ ‘|’即可。另外如果系統(tǒng)工程師想刪除這個分隔符,也是可以的。只需要采用一個可選項-d,就可以將所有的-分隔符去掉。

 

#p#

另外如果采用-s可選項還可以壓縮多個連續(xù)的字符。如可以壓縮處理系統(tǒng)命令輸出結(jié)果中的多個連續(xù)空格等等。如采用-c可選項可用于求表達式中字符的補集等等。而且最讓人驚奇的是,這幾個可選項結(jié)合使用,還可以實現(xiàn)一些比較復(fù)雜的功能。各位讀者回去可以想一下,如果想刪除某幾個特定字符以外的一些字符,該入如何實現(xiàn)呢?筆者提醒一下,結(jié)合采用可選賢-c與-d可以實現(xiàn)這個需求。大家可以回去測試一下。

  四、使用這個命令的注意事項。

  1、眾所周知,在Unix操作系統(tǒng)中,無論是文件名還是目錄名,又或者是命令,對于大小寫都是敏感的。這根微軟操作系統(tǒng)有很大的不同。為此在這個命令中,需要用到兩個參數(shù)。在這個參數(shù)中大小寫也是敏感的。如tr a c與tr A c具有不同的含義。第一個命令是將小寫的英文字符a利用小寫的英文字符c來替換。而第二個命令表示利用小寫的英文字符c去替換所有大寫的英文字符A。為此筆者提醒各位系統(tǒng)工程師,在使用這個命令的時候第一個主要注意的就是參數(shù)的大小寫一定要一致。否則的話,很難達到預(yù)計的效果。

  2、兩個字符串中長度需要相同。通常情況下采用這個命令會將第一個參數(shù)中的字符變換成第二個參數(shù)中的相應(yīng)字符。也就是說,利用第二個參數(shù)中的第一個字符替換成第一個參數(shù)中的第一個字符,依此類推,其他字符也按照這個規(guī)則進行替換。此時,如果兩個參數(shù)的長度不相等的話,那么會出現(xiàn)什么情況呢?如tr abc ab。此時第一個參數(shù)表達式將找不到對應(yīng)的字符。即系統(tǒng)不知道將字符c利用什么字符來代替。為此在使用這個命令時,要確保兩個參數(shù)的長度必須相等。

  3、利用變量提高腳本程序的可用性。有時候系統(tǒng)工程師可能需要經(jīng)常用到類似的轉(zhuǎn)換功能。如使用這個命令可以簡單的實現(xiàn)一些文件的加密作業(yè)。如可以預(yù)先將英文字符、數(shù)字等等建立一個一一對應(yīng)的關(guān)系。然后寫完內(nèi)容之后,可以利用tr命令將文本轉(zhuǎn)換為毫無意義的一個文件。如果不知道這種對應(yīng)關(guān)系的話,那么其他用戶即使得到這個文件也不能夠破譯出到底這個文本想表示什么內(nèi)容。然后知道這個對應(yīng)關(guān)系的用戶,拿到這個文件后,再次反向執(zhí)行一下這個命令(即將前后兩個參數(shù)位置對調(diào)一下),就可以將文本的內(nèi)容轉(zhuǎn)換成原先的內(nèi)容。如果建立好這個腳本之后,就可以重復(fù)利用這個腳不程序來對一些文件進行簡單的加密。但是要提高其安全性的話,往往需要不斷的對這個對應(yīng)的規(guī)則進行調(diào)整。此時是否需要更改腳本文件呢?其實不用。因為這個tr命令支持變量。其實就是將命令中的兩個參數(shù)分別賦值給兩個變量。然后在執(zhí)行命令的時候讓系統(tǒng)分別對這兩個變量求值,得出正確的對應(yīng)規(guī)則。如此的話,當(dāng)需要更改對應(yīng)規(guī)則時,不需要改變這個腳本。只需要修改這兩個變量的值即可。

【編輯推薦】

  1. Linux集群基礎(chǔ)
  2. Opera將推出Mobile Linux
  3. 玩轉(zhuǎn)linux之二-驅(qū)動開發(fā)技術(shù)探析
責(zé)任編輯:龐桂玉 來源: ChinaITLab
相關(guān)推薦

2020-03-11 10:45:36

Linux命令Linux大小寫

2020-10-15 17:55:37

Linux命令行大小寫轉(zhuǎn)換

2010-10-11 15:47:46

MySQL字符串大小寫

2010-03-25 10:39:26

Python代碼

2020-10-14 07:46:46

Linux大小寫轉(zhuǎn)換

2010-11-25 16:09:58

mysql查詢大小寫

2010-05-26 15:24:09

MySQL字符串

2010-10-27 17:16:51

Oracle查詢

2021-06-15 09:39:45

Oracle敏感數(shù)據(jù)庫

2011-05-07 10:47:29

Oracle大小寫

2010-03-04 14:02:51

Python大小寫

2021-06-04 10:30:41

MySQL表名大小

2010-11-23 13:42:18

mysql數(shù)據(jù)庫大小寫

2024-08-19 00:05:00

黑名單驗證安全驗證

2017-06-12 16:10:05

MySQL表名

2010-06-07 13:00:34

MySQL數(shù)據(jù)庫

2011-08-30 10:10:30

UbuntuLinuxMySQL

2010-05-11 13:25:18

Mysql大小寫

2010-07-15 09:47:09

SQL Server數(shù)

2009-07-31 09:01:12

AdRotator控件
點贊
收藏

51CTO技術(shù)棧公眾號