8种机械键盘轴体的比较
本人,买写代码的键盘,红轴和茶轴怎么选?
sed命令主要用于修改文本文件,使用命令的方式快速修改文件。
与vim相同,但使用交互式命令。
一般与配管命令一起使用。
主要功能:插入、删除、选择和替换
以以前的user.csv文件为例。
以下:个文件
MAC操作系统的sed和gnu-sed不同,因此以gnu-sed为标准。
mac安装。
brew install gnu-sed
更改sed alias sed=gsed,以便在. zsh或bash环境中进行更改。
或者更改软链接。
ln/usr/local/bin/gsed/usr/local/bin/sed
需要先行知识:
标准输入输出,有时间详细说。
linux有三种标准输入输出.名称文件描述语义设备STDIN0标准输入键盘
STDOUT1标准输出显示器
STDERR2标准错误显示器
STDIN:标准输入、普通键盘输入
例如,将输入收集为变量. 1
2读- p '用户名:' username
echo $username
ps: zsh和bash的语法略有不同。
zsh环境使用1
2读- s ' Pwd? 密码: '
echo $pwd
提示:
zsh用“变量? 提示取代-p
-s:隐藏输入
胡说.这里的输入是标准的STDIN
STDOUT:是指输出到显示器上的内容。
echo输出的内容为标准输出。
这是我们常见的语言
xxx.sh 21 /dev/null
此语句表示“所有错误和输出都将被重定向到黑洞”
我来说明这个句子。 主要是21 /dev/null
2:表示STDERR,错误信息
1:表示STDOUT,标准输出
:应该表示重定向,全写操作1表示标准输出重定向,2表示错误重定向。
/dev/null:表示文件,而dev/null是特殊的空文件
关键是21。 完全写入必须为21XXX。 2也意味着将STDERR错误输出重定向到1标准输出,最后进行标准输出,然后重定向到某个文件。
也可以反过来写。
把21排在最后。
|:管道符号表示将前一个命令的标准输出作为后一个命令的标准输入。
例如:1
2
3cat user.csv | awk {print}
awk {print} user.csv
了解标准输入输出和管道符号,重定向,开始sed的正题
参数
-e :在命令行模式下编辑。 默认值为-e,可以省略
-i :写入文件,
-n :仅显示匹配的行,默认情况下打印最终结果,而不添加此参数
-f :使用外部脚本。 -对于e,太复杂了,我不会说话
写入文件
sed标准输入只能通过内存和标准输出进行修改,必须使用重定向才能写入文件。
通常只是使用sed在标准输出下进行修改,而不直接修改文件。 因为直接修改文件是有风险的。
怎么修改文件?
使用sed -i '备份扩展名“”操作命令“文件
注:macOS操作系统必须填写备份后的扩展名,但允许空白
示例删除:文件的第1行.1sed -ie '1d' user.csv
1d删除第一行,稍后“删除”再详细说。
使用标准输入时,不能使用-i参数。
echo 'lalalalal' | sed -ie '1d '这将导致错误。
意思. -使用I必须带文件。
实际修改文件以使用-i参数。
标准输入
后面的基本演示都在标准输入和标准输出上。 不修改文件本身。
删除行操作
使用d命令
按行删除
sed -e '1d' user.csv
说明:
1d: 1是第1行,d是删除操作符,
1,4:表示1到4行
$:是最多的
后一行例:
正则删除
sed '/正则/d'
删除带关键字”hxsdzjy”的行:
sed '/hxsdzjy/d' user.csv
删除空白行
sed '/^[( )|s]*$/d' user.csv
注意:sed 的正则很变态,()或{}有时需要转义,有时不需要.
增加行
使用a和i操作符
a: 在后面追加
i: 在前面添加
格式:
sed -e '/模式/a 内容' 文件
在第1行前加1行内容:
sed -e '1i 内容' user.csv
在最后一行添加1行内容:
sed -e '$a 最后一行' user.csv
注意空文件的情况.文件必须存在且不能为空.
避免空文件空行,一般用>或 ‘>>’ 添加.
echo '' > tmp.txt
查找到正则添加:
sed -e '/qxdty/i "# 这就是我"' user.csv
修改内容
修改内容是很常用的功能.
使用s命令
语法:
sed -e 's/正则/替换/模式'
如修改配置文件:把root变成admin1sed -i -e 's/username=(.*);/username=admin;/' config.ini
打印行
p来打印输出行.
打印奇数行
sed -n -e '1~2p' user.csv
解释: ~表示递增,从1行开始递增,1,1+2,3+2行
偶数行:
sed -n -e '0~2p' user.csv
0,2,2+2行
匹配行的下一行
sed -n -e '2{n;p}' //第2行的下1行,第3行
上一行:
sed -n -e '2{p;n}' //第2行的上1行,第1行
范围打印:
sed -n -e '/开始正则/,/结束正则/'
读取文件
r命令
在匹配行下,读取加载文件内容.
例,在php类中为每个函数里面加载一段代码.1sed -e '/function ([A-Za-z0-9_]*)((.*)){/r log_hook.php' class.php
效果如下.
写入文件
w,把匹配的每一行写入到某个文件,和上面刚好相反.1sed -e '/function ([A-Za-z0-9_]*)((.*)){/w function.php' class.php
跨行匹配
sed默认是按行处理的.有时候有大段文字是跨多行的,就不好处理了.
sed '/开始标准/,/结束标记/'
比如上面截取函数列表.1sed -n -e '/function /,/}/w function.php' class.php
得到这样的结果.