cut,paste,sed,tr,grep,uniq,sort
----by johnny. Deng
這些指令都是linux下對于文本,字元串處理及其實用的工具。對他們的使用的一般都是基于正規表達式的;同時也是基于行處理的。
對于正規表達式,這裡就不贅述了。
cut:從資料檔案或者指令的輸出中析取各種各樣的資料域非常實用的工具。
cut -cchars file
其中chars指定從檔案file中每一行中析取哪些字元,例如-c5:析取第5個字元;-c1,13,14析取1,13,14個字元;-c1-23:析取第1到23個字元,共23
個字元;-c3-:從第3個到最後一個。
cut -ddchar -ffields file
dchar是資料中分隔各字段的分隔符(沒有-d時,預設為制表符),fields表示要從檔案file中析取出來的字段,從1開始。例如:cut -d: -f1
/etc/passwd:析取/etc/passwd中所有的系統使用者名;cut -d: -f1,6 /etc/passwd:析取/etc/passwd中所有的系統使用者及其home目錄;
paste:與cut相反,把多行合在一起。
paste files
其中files指定的那些檔案中對應行組成一行,然後寫入stdout。
例如:paste name address 組合name和address檔案中對應行。
例如:paste -d'+' names addresses 指定‘+’為分隔符。
paste -s names 将names檔案中的所有行并為一行。
sed:編輯資料的程式,意指stream editor,不能用于互動。(ed可以)
sed commond file / sed -f scriptfile file
command是作用與file各行的指令,可以執行一個command的清單scriptfile來處理一系列指令,指令舉例:
sed '5d' file 删除file第5行
sed '/[Tt]est/d' file 删除file中包含test和Test字元的行
sed -n '20,25p' file 隻顯示file中第20到25行
sed -n 'unix/p' file 隻顯示file中包含unix的行
sed '1,10s/unix/windows/g' file 将file中第1到第10行的unix字元串換成windows
sed '/jan/s/-1/-5' file 将file中所有包含jan的行中的第一個-1改為-5
sed '/s/...//' file 将file中每行前3個字元删掉
sed '/s/...$//' file 将file中每行後3個字元删掉
sed -n 'l' file 顯示file中所有行,不可列印字元顯示為/nn(nn為該字府的8進制),制表符顯示為/t
tr: 用來轉換來自标準輸入的字元。
tr from-chars to-chars
其中from-chars和to-chars是一個或多個字元。所輸入的任何字元,如果再from-chars中,它就被轉換成to-chars中對應的字元。轉換的結果寫入标準
輸出。
tr windows linux < file
tr -s : '/11': 将所有:變成制表符,‘/11’為制表符的八進制表述,-s将多個連續的制表符變為一個。
tr -d ' ' < file:從檔案中,将所有空格删除
grep: 可以從一個或者多個檔案中搜尋特定的字元串模式
grep pattern files
grep '*' file: 搜尋file中所有含有*号的行
grep -v 'windows' file:顯示file中所有不含有windows的行
grep -l 'windowsUnix' files:從files中搜尋,顯示包含windowsunix字元串的檔案清單
grep -n 'windowsUnix' file: 顯示file中包含特定字元串的行号
sort:排序操作
sort files:去除指定檔案的每行,将他們升序排序
sort -u files:去除重複的行
sort -r files:反序
sort files -o file2:将files中的行排序輸入file2中
sort -n file:按照file的算術方法排序
sort +2n files: 按算術方法排序files的第三列(跳過2列,列以空格或者制表符分隔)
sort +2n -t: file: 按算術方法排序files的第3列,每列以:分隔。
uniq: 查找重複行
uniq files:顯示files中的各行,去除重複行
uniq -d files: 顯示files中重複的行
uniq -c files: 計數files中重複行分别出現的次數
awk/perl