linux匹配刪除
㈠ linux 正則匹配 刪除文件中不包含某字元串的行
grep bbb file > file1
cat file1 > file
whudwl 的更好
㈡ Linux終端下的退格和刪除鍵^H ^ ^[[3~ 雜記
有時候為了學好Linux, 得要懂一些Unix考古學. 比如為什麼Emacs的默認快捷鍵那麼難按, 又比如煩人的換行符 和 , 以及這次的^H ^? ^[[3~.
目前我看到講考古學講得最好的書是《UNIX&LINUX大學教程》("Harley Hahn's Guide to Unix and Linux", 作者:Harley Hahn). 書中第七章 Unix鍵盤使用, 講述了^H ^? 的來龍去脈.
wikipedia 上列舉了各ASCII碼的二進制十六進制終端輸入C語言 表示方法.
簡單來說,
Linux上erase信號表示刪除最後鍵入的字元. 這個信號即可以綁定到終端的^H上, 也可以綁定到終端的^?上. (甚至隨便你喜歡的哪個鍵. ) 至於具體綁定在終端哪個鍵值上,終端上輸入 stty -a 可以看到.
在終端裡面輸入 showkey -a 然後輸入按鍵, 可以得到這個按鍵的ASCII碼和二進制,十六進製表示.輸入CTRL+D 結束.
可以自行實驗一下自己鍵盤上的Backspace、CTRL+Backspace、CTRL+H、Delete 都是什麼值.
使用遠程登錄工具的一個常見問題就是遠程系統上erase信號和本地鍵盤Backspace鍵不匹配, 本來是想刪除前一個字元, 屏幕上卻輸入了^H.
這篇文章 講述了各終端模擬器修改Backspace鍵的鍵碼方法.
更改一下終端的erase信號綁定值也是一種方法:
stty erase ^H 或者
stty erase ^?
遠程登錄工具MobaXterm 9.1 默認也是把erase信號綁定到了^H, Backspace默認也發出^H鍵. CTRL+H鍵也發送^H, 可以刪除前面的字元.
但是如果在終端里使用Emacs, 就會發現它的幫助前綴鍵 C-h 和 ^H 沖突, 按CTRL+H 是刪除字元. 這個時候只能按<F1>鍵來代替C-h
解決辦法或者在Emacs的配置文件里重新鍵綁定, 或者stty erase ^? 然後把Backspace鍵改為 ^? ( MobaXterm里就是取消勾選Backspace的^H設置, Backspace鍵就會變為^?. )
Xshell剛爆出有後門漏洞, 需要升級到最新版.
Xshell 5默認erase綁定到 ^?, 但是它有個有趣的設置. 如果鍵盤功能鍵類型設置為默認狀態, Backspace鍵序列選^?, 或者^H, 都可以起刪除前面字元的作用. CRTL+H鍵也能刪除字元. 看起來它是自動調整了. 而且在它裡面使用Emacs, CRTL+H鍵又恢復成了幫助前綴鍵, 而不是刪除鍵.
㈢ Linux如何刪除替換變數值Linux刪除替換變數值的方法
在Linux系統中,對變數進行賦值後需要發現有些問題,需要對變數值進行刪除或替換,本文將針對Linux變數值的替換和刪除做個詳細介紹,希望對你有所幫助。一起去看看吧!
1、變數內容的刪除
[root@bogon ~]# echo ${PATH} #呼叫出PATH變數的值
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH#/*bin:} #看見那個“#”符號,表示從變數“PATH”值的左邊開始向右邊刪除能匹配到“*bin:”的位置,僅刪除能匹配到最短的那個,所以輸出內容如下,“/usr/local/sbin:”被刪除了
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH#*local/bin:}
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH##/*bin:} #兩個“#”表示刪除能匹配到最長的那個,所以“/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:”全部被刪除
/root/bin
[root@bogon ~]# echo ${PATH%:/*bin} #把上邊的“#”號換成“%”看看,表示從變數“PATH”值的右邊開始向左邊刪除能匹配到“*bin”的位置,僅刪除能匹配到最短的那個,所以“:/root/bin”被刪除
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
[root@bogon ~]# echo ${PATH%%:/*bin} #兩個“%”與兩個“#”類似的道理
/usr/local/sbin
2、變數內容的替換
[root@bogon ~]# echo ${PATH/sbin/SBIN/} #用“SBIN”替換“sbin”,但只替換第一次匹配到的
/usr/local/SBIN/:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
[root@bogon ~]# echo ${PATH//sbin/SBIN/} #用“SBIN”替換“sbin”,全局替換
/usr/local/SBIN/:/usr/local/bin:/SBIN/:/bin:/usr/SBIN/:/usr/bin:/usr/local/mysql/bin:/root/bin
變數內容刪除與替換小結:
變數書寫方式功能描述
${變數名稱#匹配字元}若變數內容有被匹配到,剛從變數內容的左邊開刪除,但刪除匹配最短的
${變數名稱##匹配字元}若變數內容有被匹配到,剛從變數內容的左邊開刪除,但刪除匹配最長的,可理解成此時工作在貪婪模式
${變數名稱%匹配字元}若變數內容有被匹配到,剛從變數內容的右邊開刪除,但刪除匹配最短的
${變數名稱%%匹配字元}若變數內容有被匹配到,剛從變數內容的右邊開刪除,但刪除匹配最長的,可理解成此時工作在貪婪模式
${變數稱/舊字元串/新字元串}從變數內容的左邊開始匹配,用新字元串替換舊字元串,僅替換第一個匹配到的字元串
${變數稱//舊字元串/新字元串}從變數內容的左邊開始匹配,用新字元串替換舊字元串,全部替換匹配到的字元串
以上內容就是今天小編為大家帶來的關於Linux刪除和替換變數值的方法了,本文只介紹了刪除和替換這兩種方法,變數的修改還有取代等方式,這里就不一一介紹了。希望能夠幫助到大家!
㈣ Linux三劍客(sed)-編輯匹配到的文本
sed編輯器是一行一行的處理文件,正在處理的內容存放在模式空間(緩沖區)中,處理完畢後按照選項的規定進行輸出或文件的修改。
sed主要用來自動編輯一個或多個文件;簡化文件的反復操作,用於非交互編譯文件。
可以使用一個簡單的數字,或是一個行號范圍
注意:p的動作是:列印匹配行。
1. 原始文件:
2. sed的默認動作
(1)sed的默認動作是列印文件中的所有行。
3. 列印特定行
(1)因為sed命令默認列印文件中所有行。所以第三行會被列印兩遍。那如何只列印第三行呢?使用【-n】命令,只列印匹配的行。
(2)使用【-n】命令,只列印匹配到的行
(3)列印[n,m]行
(4)列印包含模式的行
(5)列印包含模式和指定行號之間的行
(6)包含模式和包含模式之間的行
(7) {}執行多個命令(command),使用;隔開。=是顯示文件行的行號。p是列印匹配行
(8)!取反操作
(9)q命令:第一個模式匹配完成後退出或立即退出,使用該命令列印前5行
(1)使用[]進行正則匹配
(2)其他的正則表達式
(1)列印出以#開頭的行,然後用!進行反選,則表示過濾掉以#開頭的行,不會過濾掉空格。
(2)匹配以#開頭的行,進行取反,則列印出非#開頭的行,然後其結果在對空格開頭的行進行取反。即 過濾掉以#開頭的行和以空格開頭的行。 {}表示在定位行執行的命令組。
(3)sed支持對單個文件實現不同的操作,每個操作用-e參數。定位到執行的行後,使用d命令,直接刪除匹配到的行。
需要注意的是,對源文件的添加要使用【-i】參數。
s:使用替換模式替換相應模式
(1)在匹配行前面替換字元,使用【s】命令。
(2)在所有行開頭替換元素【s】
(3)在所有行的末尾替換元素
(4)指定行,進行替換操作
(5)【&】符號代表的是匹配到的字元。在匹配到字元後,可以使用&代替。
(6)在匹配到行前面添加一行,使用【i】的命令
(7)在匹配行的後面添加一行,使用【a】命令
(8)當添加多行時,使用 來轉義
(9)@代表的是【地址定界符】,一般由三個組成,定界符可以是/,$,#等特殊字元,此命令表示,匹配特定字元的行進行替換。
(10)使用命令【g】修改全文中出現的匹配字元。
(11)若後面接數字之後在接g,表示匹配的行中,第幾次出現。就替換,2g表示替換行中第二次出現。
(1)刪除以非#號開頭的行,即顯示以#號開頭的行。
(2)刪除第一行
(3)刪除最後一行
(4)刪除指定的行區間
(5)刪除包含特定單詞的行
本文參考:
sed命令詳解
㈤ Linux命令之sed-刪除匹配行
1. sed -i '/preSql/d' a.txt
---刪除匹配到 preSql的行
2. sed -i '1d' a.txt
---刪除第一行
3. sed -i '3~2d' a.txt
---從第三行開始,每隔一行刪除
4. sed -i '4,8d' a.txt
---刪除從第4行到第8行
5. sed -i '$d' a.txt
---刪除最後一行
6. sed '/^$/d' a.txt
---刪除所有空行
7. sed -i '/Website Design/,$d' a.txt
---從匹配行到末尾行
8. sed -i '/Storage/,+2d' a.txt
--- 刪除匹配行和之後兩行
㈥ Linux:sed刪除所有匹配結果中的第一個
1、刪從0行到happy行
sed -i '0,/happy/d' test.txt
2、刪從0行到happy行裡面的happy行,相當於刪除第一個happy行
sed -i '0,/happy/{/happy/d}' test.txt
3、{}組合命令:
一組命令作為一個塊被應用
函數命令之間用";"分割
組合可以嵌套
㈦ Linux下刪除帶有特殊符號文件名的文件
不小心在目錄下建立了很多文件名中帶有引號的文件,不好匹配刪除。
查了查文檔,在文件名再加了個引號,成功匹配,順利刪除。
㈧ linux下如何刪除文本文件中的匹配行及前後幾行
sed'/Macaddress/,+3d;:go;1!{P;$!N;D};N;bgo'file
㈨ linux怎麼刪除當前目錄下的所有文件
1.首先,安裝SHH遠程軟體,連接到linux伺服器,然後使用SSH登錄到linux伺服器;
㈩ linux中怎樣查找文件並刪除
以查找和刪除mp3為擴展的文件為例:
find / -name "*.mp3" |xargs rm -rf
會刪除所有以mp3為擴展的文件。操作的時候先:
find / -name "*.mp3"
會列印出匹配的文件,如果覺得正是想刪除這些文件,再執行:
find / -name "*.mp3" |xargs rm -rf