目的
1.常見文本處理命令
2.如何簡單處理文本
學習目錄
- tr
- col
- join
- paste
1.tr命令
將字符進行替換壓縮和刪除
tr命令 可以對來自標準輸入的字符進行替換、壓縮和刪除。它可以將一組字符變成另一組字符,經常用來編寫優美的單行命令,作用很強大。
實例:echo 'hello world' | tr -d 'ol'
意義:刪除hello world中所有的ol
實例:echo 'hello world' | tr -s "l"
將hello world中的l去重爲一個l
實例:echo 'hello' | tr '[a-z]' '[A-Z]'
:echo 'HELLO | tr '[A-Z] '[a-z]'
意義:將hello轉換成HELLO
將HELLO轉換成hello
大小寫轉換
參考網址
2.col命令
過濾控制字符,col 命令可以將Tab換成對等數量的空格鍵,或反轉這個操作。
col命令 是一個標準輸入文本過濾器,它從標註輸入設備讀取文本內容,並把內容顯示到標註輸出設備。在許多UNIX說明文件裏,都有RLF控制字符。當我們運用shell特殊字符>和>>,把說明文件的內容輸出成純文本文件時,控制字符會變成亂碼,col命令則能有效濾除這些控制字符。
實例:cat [目錄/文件] | col -x | cat -A
:
意義:使用col -x
將相應目錄的相關文件中的tab
字符轉換成空格
,然後使用cat -A
查看
cat -A
查看不可見字符
參考網址
3.join命令
兩個文件中指定欄位內容相同的行連接起來
join命令 用來將兩個文件中,指定欄位內容相同的行連接起來。找出兩個文件中,指定欄位內容相同的行,並加以合併,再輸出到標準輸出設備。
實例:
>
:覆蓋文件內容並寫入
>>
:在文件後面追加,不覆蓋
echo '1 hello' > file1
:輸入1 hello並覆蓋文件內容寫入file1文件中
echo '1 world' > file2
:輸入1 world並覆蓋文件內容寫入到file2文件中
join file1 file2
:輸出1 hello world
將file1
和file2
文件中包含相同內容(1
)的那一行合併在一起。
實例:sudo join -t':' /etc/passwd[目錄/文件] /etc/shadow[目錄/文件]
:
意義:將兩個文件合併,並指定以':'
爲分隔符
-t
:指定分隔符,默認爲空格
實例:sudo join -t':' -1 1 [目錄/文件] -2 1 [目錄/文件]
意義:將2個文件合併,指定以':'
作爲分隔符,並對比第一字段和第二字段
-1
:指明第一個文件要用哪個字段來對比,默認是第一個字段
-2
:指明第二個文件要用哪個字段來對比,默認是第一個字段
參考網址
4.paste命令
將多個文件按列隊列合併
paste命令 用於將多個文件按照列隊列進行合併。
實例:paste -d ':' [文件] [文件] [文件]
意義:將三個文件合併在一起,-d
指定分隔符爲':'
,默認爲TAB
實例paste -s [文件] [文件] [文件]
意義:將三個文件合併在一起,-s
不合併到一行,每個文件爲一行。
參考網址
複習
手動完成 dos 文本格式到 UNIX 文本格式的轉換。
echo hello > file1
cat -A file1 | tr '$' '\r\n' > file2; cat -A file2
將unix文本轉換成dos文本
cat -A file2 | tr -d '^M$' > file3; cat -A file3
將dos文本轉換成unix文本