時間:2021-11-25來源:www.farandoo.com作者:電腦系統城
文本搜索工具,可以使用正則表達式搜索文本,把匹配的行打印出來
grep -E
= egrep
grep 匹配條件 處理文
-i | 忽略大小寫 |
-E “\<root" | root字符之前不能有字符 |
-E ”root\>“ | root字符之后不能有字符 |
-數字 | 顯示過濾行以及上面幾行和下面幾行 |
-n | 顯示匹配的行所在行號 |
-A | 顯示過濾行以及下面幾行 |
-B | 顯示過濾行以及上面幾行 |
-v | 反向過濾 |
建立實驗素材:
1 2 3 |
grep -E "bash$|nologin$" passwd ##過濾以bash結尾或nologin結尾的行 grep -i root passwd ##過濾含root關鍵字的行,不分大小寫 grep -iE "\<root\>" passwd ##過濾root關鍵字前后都沒有字符的行,不分大小寫 |
1 2 3 |
grep -1 ROOT passwd ##顯示含root的行,以及上下各一行 grep -A 2 -B 1 -n ROOT passwd ##顯示含root的行,以及上1行,下2行,均顯示行號 grep root passwd | grep -E "^root" - v ##顯示root在結尾或中間的行,即反向過濾root在開頭 |
^root | 以root開頭 |
root$ | 以root結尾 |
s...k | s開頭k結尾中間任意3個字符 |
....k | k結尾前后4個任意字符 |
* | 字符出現任意 |
? | 0到1次 |
+ | 1到任意次 |
{n} | n次 |
{m,n} | m到n次 |
{0,n} | 0-n次 |
{,n} | 0-n次 |
{m,} | 最少m次 |
(skk){6} | skk字符串出現6次 |
建立實驗素材:
1 2 3 |
grep -E 's.{2,4}s' grepfile ##s和s之間有2到4個任意字符 grep -E 's.?s' grepfile ##s和s之間有0到1個任意字符 grep -E 's(ks){2,}' grepfile ##s后面ks字符串最少出現2次 |
請顯示系統中能被su命令切換的用戶名稱
能被su切換,則必須以/bin/bash
或/bin/sh
結尾
1 | grep -E "/bin/bash$|/bin/sh$" /etc/passwd | cut -d : -f 1 |
sed 參數 命令 處理對象
-e
:當給出多個sed指令時使用-f
:后面跟保存了sed指令的文件-i
:直接對內容修改,不加-i
時默認為預覽,不對文件做實際修改-n
:取消靜默輸出,sed默認會輸出所有文本內容,使用-n
后只顯示處理過的行
建立實驗素材:
p:顯示
-n 5p | 顯示第5行 |
-n 3,5p | 顯示3到5行 |
-n ”3p;5p“ | 顯示3和5行 |
-ne 1,5p | 顯示1-5行 |
-ne '5,$p' | 顯示5到最后行 |
-n '/^#/p' | 顯示以#開頭的行 |
d:刪除
5d | 刪除第五行 |
'/^#/d' | 把#開頭的行刪除 |
'/^UUID/!d' | 除了UUID開頭以外的行都刪除 |
-e '5,$d' | 刪除5到最后一行 |
a:添加,c:替換
-e '$a hello world' | 最后一行后添加 |
-e '5a hello\nworld' | 第5行后添加換行的內容 |
-e '/^#/a hello world' | 在以#開頭的行后面添加 |
-e '/^#/c hello world' | 替換以#開頭的行 |
'5chello world' | 替換第5行 |
w:把符合的行寫到指定文件中,i:插入,r:整合文件
'/^root/w linuxfile' | 把文件中root開頭的行寫入linuxfile中 |
'5ihello linux' | 第5行前插入內容 |
'5r haha' | 把haha文件的內容整合到第5行之后 |
建立實驗素材:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
sed '=' passwd ##每一行前面加行號 sed '=' passwd | sed 'N;s/\n/ /g' ##將換行符轉換為空格(sed是逐行檢測的,加入N提前加載處理下一行) sed 'G' passwd ##每行后面都加一個空行 sed '$G' passwd ##給最后一行后加空行 sed '$!G' passwd ##除了最后一行在后面都加空行 sed 's/:/#/g' passwd ##將全文的:替換為#,s全文,g每行的全部 sed 's/:/#/' passwd ##只替換每行的第一個 sed '1s/:/%%%/g' passwd ##第一行替換 sed '1,5s/:/%%%/g' passwd ##替換1到5行 sed '1s/:/%%%/g;5s/:/%%%/g' passwd ##替換第1行和第5行 sed '/mail/,/ftp/s/:/%%%/g' passwd ##指定字符間替換 sed 's/\//%%%/g' passwd ##替換全文的"/","\"為轉義字符 sed 's@/@%%%@g' ##也可以使用“@”代替“/” |
編寫Apache_port.sh
,此腳本后接數字,http
的端口就改為此數字,假設selinux
為關閉狀態
例如:
sh Apache_port.sh
ERROR: Pleaase input port number following script !!
sh Apache_port.sh 8080
apache的端口會被修改為8080,在其他主機可以訪問到測試頁面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
vim Apache_port.sh #!/bin/bash yum install httpd -y &> /dev/null systemctl enable --now httpd &> /dev/null echo "hello linux" > /var/www/html/index .html systemctl enable --now firewalld &> /dev/null [ -z $1 ] && { echo "ERROR: Pleaase input port number following script !!" exit } [ -z "`netstat -antlupe | grep -E " :$1\> "`" ] || { echo "Error: $1 is using !!!" exit } sed "/^Listen/c Listen $1" -i /etc/httpd/conf/httpd .conf systemctl restart httpd firewall-cmd --permanent --add-service=http &> /dev/null firewall-cmd --reload &> /dev/null echo "Change $1 sucessful!!" |
awk -F 分隔符 BEGIN{}{}END{} FILENAME
NR | 行數 |
NF | 列數 |
FILENAME | 文件名稱本身 |
linux | linux變量值 |
“linux” | linux字符串 |
/bash$/ | 條件 |
/條件1|條件2/ | 條件1或者條件2 |
/條件1/||/條件2/ | 條件1或者條件2 |
/條件1/&&/條件2/ | 條件1并且條件2 |
$0 | 所有的列 |
$1 | 第1列 |
$2 | 第2列 |
$3 | 第3列 |
建立實驗素材:
1、在passwd
文件開始加上hello
,結尾加上end
,打印第一列
1 | awk -F : 'BEGIN{print "hello"}{print $1}END{print "end"}' passwd |
2、統計文件行數,顯示以bash
結尾的第一列
1 2 |
awk -F : 'BEGIN{N=0}{N++}END{print N}' passwd0 awk -F : '/bash$/{print $1}' passwd |
3、第六列沒有root
關鍵字并且以bash
結尾的行,顯示第一列
1 | awk -F : '$6!~/root/&&/bash$/{print $1}' passwd |
統計在系統中能su
切換的并且用戶家目錄不在/home
下的用戶數量
(1)方法一
1 | awk -F : '$6!~/^\/home/&&/bash$/{print $1}' /etc/passwd | wc -l |
(2)方法二
1 | awk -F : 'BEGIN{N=0}$6!~/^\/home/&&/bash$|sh$/{N++}END{print N}' /etc/passwd |
以上就是Linux運維shell文本處理工具grep sed swk操作示例的詳細內容
2022-04-13
蘋果系統安裝雙系統圖文教程 蘋果系統怎么裝雙系統 ?2022-04-13
遠程登錄Linux CentOS系統方法 怎么遠程登錄Linux CentOS系統?2022-03-21
CentOS7安裝MYSQL8.X的詳解教程很多網友對于linux系統比較陌生,更別說linux系統安裝了。有使用筆記本電腦的網友需要用到linux系統,不過卻不知道怎么安裝,所以下面小編要來跟大家說說linux操作系統安裝步驟詳細,大家一起來看看吧。...
2022-03-07
RedFlag紅旗Linux系統怎么安裝?電腦想要安裝雙系統,該怎么安裝RedFlag紅旗系統呢?下面我們就來看看紅旗Red Flag安裝全程圖解,詳細請看下文介紹...
2022-01-23