1. 程式人生 > >【Linux學習五】文字處理

【Linux學習五】文字處理


環境
  虛擬機器:VMware 10
  Linux版本:CentOS-6.5-x86_64
  客戶端:Xshell4
  FTP:Xftp4

一、cut:顯示切割的行資料
f:選擇顯示的列
s:不顯示沒有分隔符的行
d:自定義分隔符

舉例:
cut -d' ' -f1-3 test.txt 按照空格切分test.txt每一行資料 顯示1-3列
cut -d' ' -f1,3 test.txt 按照空格切分test.txt每一行資料 顯示第1、3列
cut -d' ' -s -f1,3 test.txt 按照空格切分test.txt每一行資料 顯示第1、3列 不顯示沒有分隔符的行

二、sort:排序檔案的行
n:按數值排序
r:倒序
t:自定義分隔符
k:選擇排序列
u:合併相同行
f:忽略大小寫

[[email protected] src]# sort -t' ' -k2 sort.txt
apple 1
banana 12
orange 8
[[email protected] src]# sort -t' ' -n -k2 sort.txt
apple 1
orange 8
banana 12
[[email protected] src]# sort -t' ' -n -r -k2 sort.txt
banana 12
orange 8
apple 1


三、wc 統計單詞
-c 位元組數
-l 行數
-w 單詞數
統計檔案行數、單詞數、單詞位元組數(包括空格、佔位符)
[[email protected]

src]# wc sort.txt
3 6 27 sort.txt

四、sed 行編輯器
主要兩件事:
1.查詢資料,使用行號或者正則查詢
2.對查詢出來的資料進行新增(行前或行後)、替換、刪除 -i引數會修改原始檔

sed [options] 'AddressCommand' file ...
options:
-n: 只展示匹配到內容
-i: 直接修改原檔案
-e SCRIPT -e SCRIPT:可以同時執行多個指令碼
-f /PATH/TO/SED_SCRIPT
-r: 表示使用擴充套件正則表示式

編輯命令
d: 刪除符合條件的行;
p: 顯示符合條件的行;
a\string: 在指定的行後面追加新行,內容為string
\n:可以用於換行
i\string: 在指定的行前面新增新行,內容為string
c\ 用新文字替換定位文字
r FILE: 將指定的檔案的內容新增至符合條件的行處
w FILE: 將地址指定的範圍內的行另存至指定的檔案中;
s/pattern/string/修飾符: 查詢並替換,預設只替換每行中第一次被模式匹配到的字串
g: 行內全域性替換
i: 忽略字元大小寫
s///: s###,

[email protected]@@
\(\), \1, \2

sed:行編輯器Address
可以沒有
給定範圍
查詢指定行/str/


五、awk
awk是一個強大的文字分析工具。相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。
簡單來說awk就是把檔案逐行的讀入,(空格,製表符)為預設分隔符將每行切片,切開的部分再進行各種分析處理。
awk -F '{pattern + action}' {filenames}
支援自定義分隔符
支援正則表示式匹配
支援自定義變數,陣列 a[1] a[tom] map(key)
支援內建變數
ARGC 命令列引數個數
ARGV 命令列引數排列
ENVIRON 支援佇列中系統環境變數的使用
FILENAME awk瀏覽的檔名
FNR 瀏覽檔案的記錄數
FS 設定輸入域分隔符,等價於命令列 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
支援函式
print、split、substr、sub、gsub
支援流程控制語句,類C語言
if、while、do/while、for、break、continue


參考:
sed
https://www.cnblogs.com/ctaixw/p/5860221.html