Linux 簡單的文本處理

目的

1.常見文本處理命令
2.如何簡單處理文本

學習目錄

  1. tr
  2. col
  3. join
  4. 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 worldfile1file2文件中包含相同內容(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文本

發佈了32 篇原創文章 · 獲贊 0 · 訪問量 893
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章