正則表達式grep,sed

HTTP

一個簡單的網頁文件

service iptables stop

echo “<h1>I ?LOVE YOU</h1>” > /var/www/html/index.html

文本排序sort

sort 1.txt ??排序規則先數字后字母,小寫字母在前。

sort -t “:” -k3 /etc/passwd ???用用戶的UID排序,按字符大小。(等于tr -d f

sort -t “:” -k3 -n /etc/passwd ??數字排序 ???????uniq ??-c ???縮減重復的行并進行統計

cut -d: -f3 /etc/passwd | sort -nr > uid.txt ??將用戶的uid截取出來并排序(數字排序,倒序)

R 隨機排序

sort -u f1 ????????????????????????????去掉重復的行

例子:

sort -t ” ” ?-k 1 access_log |cut -d ” ” -f1 |uniq -c |sort -nr ????統計訪問量并排序

last | sort | cut -d ” ” -f1 |uniq -c ?????????????????統計用戶登陸次數

uniq 命令?????選項-c ??顯示每行重復次數

??-d ??僅顯示重復過的行

??-u ???僅顯示不重復的行

LINUX文本處理 ???(grep,sedawk)文本處理三劍客

grep 文本處理

例子:

df -h | grep “/dev/sd” | tr -s ” ” “%” | cut -d% -f5 ???過濾硬盤/dev/sd*這些設備使用率

??小技巧:nmap -v 172.168.102.0/24 ?掃描這個網段的活躍IP

grep -e root -e zm /etc/passwd ??過濾/etc/passwd中包含rootzm的行(-e同時執行)

正則表達式

* ????匹配前面字符任意次,包括0次。貪婪模式,盡可能多的或長的匹配。

.* ?????任意長度的任意字符

\? ?????匹配其前面的字符0次或者1

\+ ?????匹配前面的字符至少一次

\{n\} ???匹配前面的字符n次 ??????????????????注:\取消特殊含義

\{m,n\} ?匹配前面的字符至少m次,最多n

\{,n\} ???匹配前面的字符最多n

\{n,\} ???匹配前面的字符至少n

例子:

ifconfig這條命令中輸出的所有ip過濾出來

ifconfig | grep -o “[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}”

位置錨定:定位出現的位置

^ ?行首錨定,用于該模式的最左側

$ ?行尾錨定,用于該模式的最右側

^PATTERN$ ?用于模式的匹配整行

^$ 空行

^[[:space:]]*$ ?空白行

\<\b詞首錨定,用于單詞模式的左側

\>\b 詞尾錨定,用于單詞模式的右側

\<PATTERN>\ ???匹配整個單詞

例子:

cat /etc/fstab | grep -v “^#” | grep -v “^$” ?????過濾掉/fstab以#浩開頭的行和空行

grep ‘^[[:space:]]\+linux16’ /boot/grub2/grub.cfg | grep -v rescue ???過濾出更改網卡名的行

分組處理

分組:將一個或者多個字符綁定在一起,當作一個整體來處理:\(root\)\+

例:\(string1\+\(string2\)*\)

egrep擴展的正則表達式

字符匹配: ??. 任意單個字符 ???[] 指定范圍的字符 ??[^]不在范圍內的字符

或者:a|b ???a或者b

??C|cat ??C或者cat

??(C|c)at ?Cat或者cat

例子:

ifconfig | grep -oE “([0-9]{1,3}\.){3}[0-9]{1,3}” ????用擴展正則表達式取ip

ls *.rpm |rev | cut -d. -f2|rev|sort |uniq -c ??????統計出光盤鏡像中各種類型的安裝包

ls *.rpm | grep -o “\.\b[0-9a-z_]*\>\.rpm” | sort |uniq -c ?用正則表達式寫出統計光盤

VIM

字符編輯: x:刪除當前光標的字符 ??#xdel光標起始后的字符

???xp:交換光標所在處的字符及其后面字符的位置

???~:轉換大小寫 ??j:刪除光標當前行后的換行符

替換命令: r:替換光標所在處字符

???R:切換成replace模式

可視化模塊:ctrl+v 面向塊

多文件分割:vim -o|-O file1 ??file2

-o:水平分割

-O:垂直分割

單文件窗口分割:ctrl+w,s:split,水平分割

????????ctrl+wv: ?垂直分割

????Ctrl+w,q :取消相鄰窗口

????ctrl+w,o:取消全部窗口

命令模式:wqall ?退出

sed處理文本的工具

Sed ?選項 ??文件

-n :不輸出模式空間內容到屏幕,即不自動打印

-e :多點編輯

-f /PATH/SCRIPI_FILE:從指定文件中讀取編輯腳本

-r :支持使用擴展正則表達式

-i.bak :備份文件并原處編輯

script: ?地址命令??????不給地址對全文處理

單地址:#:指定的行,$:最后一行 /pattern/:被模式所能匹配到的每一行

地址范圍:#,# ????從第幾行到第幾行

??#,+# ???從第幾行加若干行之后

??/pat1/,/pat2/ ?從一個模式找到下一個模式

??#,/pat1/ ????從第幾行到下一個模式

~:步進

1~2奇數行

2~2偶數行

例子:

ifconfig |sed -n ‘2p’ ????打印出有本機ip的行

sed -n ‘/^[^#]/p’ /etc/fstab 打印出該文件中非#開頭的行

sed ‘/^#/d’ ?f1 ??刪除該文件中以#號開頭的行

編輯命令:

d:刪除模式空間中匹配的行

P:打印當前模式空間中的內容

a[\]text:在指定的行后面追加文本,支持使用\n實現多行追加

I[\]text:在行前面插入文本

C[\]text:替換行為單行或者多行文本

w/path/somefile:保持模式匹配的行到指定文件

r/path/somefile:讀取指定文件的文本至模式空間中匹配到行后

=:為模式空間中的行打印行號

?。耗J娇臻g中匹配行進行取反處理

例子:

cat f1 |sed ?‘5a1234567\n7654321’ ?在該文件中的第五行后追加

cat f1 |sed ?‘5,10a1234567\n7654321’ 在該文件的510行后分別追加

cat f1 |sed ?‘5a\ ???1234567\n7654321’ ?在該文件的5行加空格

cat f1 |sed ?‘5\c7654321’ ?????替換該文件的5

sed =?f1 給該文件的輸出打行號

cat f1 |sed ’10!d’ ??????除了10行全部刪除

sed工具:

s///:查找替換,支持使用其他分隔符,s@@@,s###

替換標記:g ??行內全局替換

??P ??顯示替換成功的行

??w ?/PATH/TO/SOMEFILE:將替換成功的行保存至文件中

例子:

sed ‘s@UUID@DSB@’ f1 ??將文件中的UUID替換成DSB

sed ‘s/quiet/& net.ifnames=0/’ /etc/default/grub ??在文件中的quiet后面加上net.ifnames=0

sed ‘/GRUB_CMDLINE_LINUX/s/”$/ ?net.ifnames=0 &/’ /etc/default/grub

?????在文件中以GRUB_CMDLINE_LINUX開頭的行最后一個“前面加上net.ifnames=0

ifconfig | sed -n ‘2p’| sed ‘s/^.*net //’| sed ‘s/net.*//’ ?????過濾出ip地址

?

?

?

?

?

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92330

(1)
zhangmengzhangmeng
上一篇 2018-03-13 15:23
下一篇 2018-03-13 17:43

相關推薦

  • 搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)

    架構簡介 參加馬哥linux培訓一周了,自己感覺每天都進步很多,現在來說說這個架構,也是架構師第一周的作業第二題。搭建一套LVS-DR模型的高性能集群,做了兩天終于完成并實現了這個架構,我設計的架構圖如下所示: 此架構主要是用ipvsadm來實現高性能集群,Realserver(RS1,RS2)安裝配置nginx,RS服務器分別配置了一個內網,一個外網。正?!?/p>

    Linux干貨 2016-12-06
  • Linux的哲學思想

    Linux的哲學思想 一切皆文件  幾乎把所有的資源系統抽象為文件形式:包括硬件設備,甚至通信接口等 由眾多功能單一的程序組成:一個程序只做一件事,并且做好;組合小程序完成復雜任務  力求使程序精簡凝練,出現地完成最核心的需求;盡量避免使其膨脹成為一個臃腫的程序,致使大部分代碼很少被需要和執行。 小程序易于理解,維護,消耗系統資源較少,易…

    Linux干貨 2017-07-03
  • 馬哥教育網絡21期+第二周練習博客

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 長用的文件管理類命令有cp(復制),mv(移動),rm(刪除)。接下來我將為大家一一講解。 復制命令:cp 在cp時要根據源和目的做出確認與調整; 命令格式:     cp [OPTION]… [-T] SO…

    Linux干貨 2016-07-22
  • 馬哥教育網絡班21期+第7周課程練習

    馬哥教育網絡班21期+第7周課程練習 創建一個10G分區,并格式為ext4文件系統;    a.要求block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;    b.掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不能更新文件的訪問時間戳; #&…

    Linux干貨 2016-08-22
  • CentOS6.7上編譯安裝php

    環境:CentOS6.7,minimal安裝。 前提條件:安裝了編譯環境,安裝了Apache/Nginx,安裝了MySQL/MariaDB。具體安裝見:http://www.www58058.com/16583    http://www.www58058.com/17497  1、解決依賴關系: 請配置好yum源(系統安裝源及…

    Linux干貨 2016-06-03
  • iptables實驗2

    IPTABLES   實驗2       實驗大體結構圖       相關概念及公式 源地址轉換:    SNAT   POSTROUTING 目標地址轉換:DNAT  PREROUTING   每次重啟網絡后…

    Linux干貨 2016-10-24
欧美性久久久久