歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux 文本處理

linux 文本處理

日期:2017/3/3 11:29:51   编辑:Linux技術

1.文本處理-echo

echo -e "\033[40;35m...."

背景顏色范圍:40--49

40:黑 41:深紅 42:綠

43:黃色 44:藍色 45:紫色

46:深綠 47:百色

字體顏色范圍:30-39

30:黑 31:紅 32:綠

33:黃 34:藍色 35:紫色

36:深綠 37:百色

eg:

echo -e "\033[40;35mhello word\033[0m"

2.文本處理-sort

sort [選項] 輸入文件

-o 輸出文件

-d 按字典順序排序

-n 按數字大小輸出

-r 按逆序輸出排序結果

-k 指定分類是域上得數子分類

-t 域分隔符;用非空格或tab鍵分隔域

eg:

sort -k3 -n -r -t: /etc/passwd|more

3.文本處理-diff

diff[選項] 文件/目錄 文件/目錄

diff /etc/passwd /etc/passwd.bak

-q 僅顯示有無差異,不顯示詳細的信息

-c 顯示全部內文,並標出不同之處

-b 不檢查空格字符的不同

-B 不檢查空白行

-r 比較子目錄中的文件

4.grep 選項

-n 在每行前顯示編號

應用實例

a.設置大小寫

#grep '[Tt]his' file1.txt

b.不匹配行首

#grep '^[^#]' file.txt //找出不是以#開頭的字符字符串

c.匹配任意字符

#grep "s...n" file3.txt

s123n true

s34n false

注意:三個點三個字符

d.-v

grep -v "hello" file

搜索不含有"hello" 字符串的行

5.sed操作動作

s 替代操作

i 插入命令

a 附加命令

d 刪除全部匹配的行

D 刪除全部匹配的行

eg:

#sed -n '1,4 p' /etc/passwd 打印/etc/passwd的1到4行

#sed '/80/D' file.txt 刪除全部匹配80的行

#sed 's/var/usr/g' file.txt 所有var用usr替換

#sed '50,$s/help/man/g' file.txt所有help用man替換

#sed "3i\\chengyaogen" log log文件的第三行前面插入chengyaogen

#sed "3a\\chengyaogen" log log文件的第三行後面插入chengyaogen

#sed "3d" log 刪除log文件的第三行

6.awk格式

awk [選項] 'awk腳本' 輸入文件

-F fs使用fs作為輸入記錄的字段分隔符

-f filename 從文件filename讀取awk_script

-v var=value 為awk_script設置變量

awk的內置變量

變量 功能 默認

FS 輸入字段分隔符 空格或tab

RS 輸入記錄分隔符 換行

OFS 輸出字段分隔符 空格或tab

ORS 輸出記錄分隔符 換行

NF 當前記錄非空字段的編號 $NF 最後一列

NR 從所有文件讀入的記錄號 $NR 對應的行號

應用實例

#awk -F : '{print NR,$1,$2}' /etc/passwd

輸出/etc/passwd的第一列、第二列並顯示對應的行號

#awk -F : '{print NR,$1,$NF}' /etc/passwd

輸出/etc/passwd的第一列,最後一列並顯示對應的行號

#awk -F : 'NR%10==5{print NR,$0}' /etc/passwd

輸出行號對10 求余為5的一整行信息

#awk -F : 'NR==8,NR==13{print NR,$0}' /etc/passwd

輸出行號[8,13]的行的信息

#awk -F : '{if($3>50){print $1}}' /etc/passwd

Copyright © Linux教程網 All Rights Reserved