首页 > 编程知识 正文

python高级面试题,linux开发工具三剑客

时间:2023-05-04 05:45:59 阅读:13020 作者:17

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

得到这样的结果.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。