Linux系統學習之字元處理

2021-09-20 01:29:19 字數 3169 閱讀 2128

管道

管道是一種使用非常頻繁的通訊機制,我們可以使用管道符"|"來連線程序,

由管道連線起來訂單程序可以自動執行,如同有乙個資料流一樣,所以管道表現為輸入輸出重定向的一種方法,

它可以把乙個命令的輸出內容當作下乙個命令的輸入內容,兩個命令之間只需要管道符連線即可

使用grep搜尋文字

grep [-ivnc] '需要匹配的字元' 檔名

#-i 不區分大小寫

#-c 統計包含匹配的行數

#-n 輸出行號

#-v 反向匹配

例子:[root@cfhost-170820-ucnk ~]# cat test.txt

the cat's name is tom,what's the mouse's name?

the mouse's name is jerry

they are good friends

[root@cfhost-170820-ucnk ~]# grep 'name' test.txt //搜尋含有'name'的句子

the cat's name is tom,what's the mouse's name?

[root@cfhost-170820-ucnk ~]# grep -i 'name' test.txt //搜尋含有'name'的句子,忽略大小寫

the cat's name is tom,what's the mouse's name?

the mouse's name is jerry

[root@cfhost-170820-ucnk ~]# grep -c 'name' test.txt//含'name'的句子有多少條

1[root@cfhost-170820-ucnk ~]# grep -ci 'name' test.txt//含'name『的句子有多少條,大小寫可忽略

2[root@cfhost-170820-ucnk ~]# grep -v 'name' test.txt //搜尋不含'name'的句子

the mouse's name is jerry

they are good friends

[root@cfhost-170820-ucnk ~]# grep -vi 'name' test.txt//搜尋不含'name'的句子,大寫的name也過濾掉

they are good friends

[root@cfhost-170820-ucnk ~]# cat test.txt

the cat's name is tom,what's the mouse's name?

the mouse's name is jerry

they are good friends

[root@cfhost-170820-ucnk ~]# cat test.txt | grep -vi 'name' ? //以上命令都可以使用管道符改寫,比如上乙個命令可以這樣寫,意思都是一樣的

they are good friends

使用sort排序

sort [-ntkr] 檔名

#-n 採取數字排序

#-t 指定分隔符

#-k 指定第幾列

#-r 反向排序

[root@cfhost-170820-ucnk ~]# cat sort.txt

b:3c:2

a:4e:5

d:1f:11

[root@cfhost-170820-ucnk ~]# cat sort.txt | sort //按字母正向排序

a:4b:3

c:2d:1

e:5f:11

[root@cfhost-170820-ucnk ~]# cat sort.txt | sort -r //按字母反向排序

f:11

e:5d:1

c:2b:3

a:4[root@cfhost-170820-ucnk ~]# cat sort.txt | sort -t ":" -k 2 -n

d:1c:2

b:3a:4

e:5f:11

使用uniq刪除重複內容

uniq [-ic]

#-i 忽略大小寫

#-c 計算重複內容

[root@cfhost-170820-ucnk ~]# cat uniq.txt | sort | uniq

//需要說明的是uniq命令一般需要和sort一起使用,也就是先將檔案使用進行sort排序,然後再使用uniq刪除重複的內容。單獨加上uniq不加sort是沒有效果的。

123abc

補充說明:

[root@cfhost-170820-ucnk ~]# cat uniq.txt | uniq

abc123

abc123

[root@cfhost-170820-ucnk ~]# cat uniq.txt | sort | uniq -c

//使用-c引數就會在每行前面列印出改行重複的次數

2 123

使用cutt擷取文字、使用tr做文字轉換、使用paste做文字合併(還有乙個檔案分割用split做,這裡不再說了,我目前想不到它到底有什麼用)

cut -f 指定列 -d '分隔符'

[root@cfhost-170820-ucnk ~]# cat /etc/passwd | cut -f1 -d ':'

root

bindaemon

admin

tr命令比較簡單,其主要作用在於文字轉換或刪除

[root@cfhost-170820-ucnk ~]# cat /etc/passwd | tr '[a-z]' '[a-z]'

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

paste的作用在於將檔案按照行進行合併,中間使用tab隔開

[root@cfhost-170820-ucnk ~]# cat a.txt

a b c

[root@cfhost-170820-ucnk ~]# cat b.txt

a b c

[root@cfhost-170820-ucnk ~]# paste a.txt b.txt

a b c    a b c

Linux系統學習之字元處理

管道 管道是一種使用非常頻繁的通訊機制,我們可以使用管道符 來連線程序,由管道連線起來訂單程序可以自動執行,如同有乙個資料流一樣,所以管道表現為輸入輸出重定向的一種方法,它可以把乙個命令的輸出內容當作下乙個命令的輸入內容,兩個命令之間只需要管道符連線即可 使用grep搜尋文字 grep ivnc 需...

linux系統學習之管道

首先理解管道其實是乙個二進位制位元組流,它是核心為維持兩個或多個程序互相通訊的一種手段 一種ipc 如下圖所示 include include include include include define buf siz 10 int main int argc,char argv write 1,...

linux系統學習之Umask

linux系統學習之umask。檔案許可權管理之 umask mask 新建檔案 目錄的預設許可權是由mask決定的 umask 會影響到mask,umask表示要減掉的許可權 shell vim,touch umask 新檔案或目錄許可權 vsftpd umask 新檔案或目錄許可權 samba ...