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