Linux 三剑客之sed
Linux 三剑客之sed
命令补充:
sort命令
对文本文件的内容,以行为单位来排序,比较原则是从一行的首个字符依次向后,按照字符对应的ASCII码值进行比较,默认升序
格式:
sort [参数] [-o 输出文件]
参数:
-b
: 不包括开头的空白字符,从第一个可见字符比较-n
:按照数值的大小排序-r
:以相反的顺序来排序-k
:以某列进行排序-t<分隔字符>
: 指定排序时所用的栏位分隔字符-o<输出文件>
: 将排序后的结果存入指定的文件-k
: 选择以哪个列进行排序-f
: 排序时,忽略大小写字母-u
:排序过程中去除重复的行
实例如下:
# 常用参数演示,文件内容自己编写
# 排序
[root@localhost ~]# cat 1.sh
aa
ab
ac
ad
[root@localhost ~]# sort 1.sh
aa
ab
ac
ad
# -n按照数值大小排序
[root@localhost ~]# sort -n 1.sh
1aa
22ab
32ac
42ad
# -r 以相反的顺序来排序,降序输出
[root@localhost ~]# sort -r 1.sh
aaa
4ad
32ac
22ab
1aa
1
# 按第一列排序
[root@localhost ~]# sort -k1 1.sh
1
1aa
22ab
32ac
4ad
aaa
# -t:指定分割符,默认是以空格为分隔符
# 注:分隔符排序前有空格行
[root@localhost ~]# cat 3.sh
|1|2|3|5|6|2|1|3|7|8
|3|4|4|5|4|6|7|8|9|8
|2|3|4|5|4|6|5|7
|3|4|6|8|9|0|7|0|7
|3|2|4|2|4|2|4|2|3|4
[root@localhost ~]# sort -n -r -k2 -t '|' 3.sh
|3|4|6|8|9|0|7|0|7
|3|4|4|5|4|6|7|8|9|8
|3|2|4|2|4|2|4|2|3|4
|2|3|4|5|4|6|5|7
|1|2|3|5|6|2|1|3|7|8
# `-u`:排序过程中去除重复的行
[root@localhost ~]# cat 4.sh
aaaaaa
aaaaaa
bbbbbb
bbbbbb
cccccc
cccccc
[root@localhost ~]# sort -u 4.sh
aaaaaa
bbbbbb
cccccc
# -o<输出文件> : 将排序后的结果存入指定的文件
[root@localhost ~]# sort -u 4.sh > 5.sh
[root@localhost ~]# cat 5.sh
aaaaaa
bbbbbb
cccccc
uniq命令
用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
格式:
uniq [参数] [文件]
参数:
-c
: 在输出行前面加上每行在输入文件中出现的次数-d
:仅显示重复出现的行列-u
:仅显示不重复行列
实例如下:
# 去重
[root@localhost ~]# cat 4.sh
aaaaaa
aaaaaa
bbbbbb
bbbbbb
cccccc
cccccc
[root@localhost ~]# uniq 4.sh
aaaaaa
bbbbbb
cccccc
# 注意,去重是相邻重复内容去重,所以先排序再去重
[root@localhost ~]# cat 5.sh
123
124
123
123
123
124
124
124
125
126
[root@localhost ~]# uniq 5.sh
123
124
123
124
125
126
# 这样的话就没有达到去重的效果,需要搭配sort使用
[root@localhost ~]# sort -n 5.sh|uniq
123
124
125
126
# -c: 在输出行前面加上每行在输入文件中出现的次数
[root@localhost ~]# sort -n 5.sh|uniq -c
4 123
4 124
1 125
1 126
# -u:仅显示不重复行列
[root@localhost ~]# sort -n 5.sh|uniq -u
125
126
cut命令
cut命令用来输出每一行中的指定部分,删除(剪切)文件中指定字节,字段
格式:
cut [-b/c/f] [file]
定位方法:
-b
:字节-c
:字符-f
:域
注.必须指定-b,-c,-f其中一种
参数:
-b
:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志-c
:以字符为单位进行分割-d
:自定义分隔符,默认为制表符(Tab)-f
:与-d
一起使用,指定显示哪个区域-n
:取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />
范围之内,该字符将被写出;否则,该字符将被排除。
实例如下:
-b字节(英文数字)模式如下
# 用当前登录用户信息举例
[root@localhost ~]# who
root tty1 2021-12-21 18:47
root pts/0 2021-12-21 16:52 (192.168.15.1) # -b 模式提取字节
[root@localhost ~]# who | cut -b 3
o
o
# 提取第1,2,3列的字节
[root@localhost ~]# who | cut -b 1,2,3
roo
roo
[root@localhost ~]# who | cut -b 1-3
roo
roo
# cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序。
[root@localhost ~]# who | cut -b -3,3-
root tty1 2021-12-21 18:47
root pts/0 2021-12-21 16:52 (192.168.15.1)
# -3表示从第一个字节到第三个字节,3-表示从第三个字节到行尾
# 执行上述语句,第三个字节不会重叠输出
-c模式字符(汉字可用)如下:
[root@localhost ~]# cat a.txt
路飞
山治
索隆
娜美
黑胡子
白胡子
# 如果用b模式就会不完全输出
[root@localhost ~]# cut -b 2 a.txt
·
±
´
¨
»
# 用c模式,区别就看出来了
[root@localhost ~]# cut -c 2 a.txt
飞
治
隆
美
胡
胡
# -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。 # 使用-n搭配b模式使用,解决乱码
[root@localhost ~]# cut -nb 2 a.txt
飞
治
隆
美
胡
胡
-f模式,-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策,这时候使用-f模式,在使用的时候注意设置间隔符
# 提取用户名
[root@localhost ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# head -n 5 /etc/passwd | cut -d : -f 1
root
bin
daemon
adm
lp
tr命令
用一个字符来替换另一个字符,或者可以完全删除一些字符,替换等
格式:
tr [OPTION]... SET1 [SET2]
参数:
-c
:用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。-d
:删除指令字符-s
:缩减连续重复的字符成指定的单个字符-t
:削减 SET1 指定范围,使之与 SET2 设定长度相等
实例如下:
# 替换
[root@localhost ~]# cat 2.sh
+a+b+c+d
+e+f+g
+h+i+j+k
+1+2+a+s+d+a+s
+a+b+c+1+2+3
# 将2.sh中的'+'替换成'|'
[root@localhost ~]# cat 2.sh | tr + '|'
|a|b|c|d
|e|f|g
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 将2.sh小写字母替换成大写字母
[root@localhost ~]# cat 2.sh | tr a-z A-Z
|A|B|C|D
|E|F|G
|H|I|J|K
|1|2|A|S|D|A|S
|A|B|C|1|2|3 # 删除
# -d 删除2.sh中的ab字母
[root@localhost ~]# cat 2.sh | tr -d "ab" > new_file
[root@localhost ~]# cat new_file
|||c|d
|e|fffff|g
|h|i|j|k
|1|2||s|d||s
|||c|1|2|3 # -s 删除连续的字符,相当于去重,只保留第一个
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
[root@localhost ~]# cat 2.sh | tr -s [a-z] > new_file
[root@localhost ~]# cat new_file
|a|b|c|d
|e|f|bg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# -s还有替换的功能,将2.sh中的'|',替换成'-'
[root@localhost ~]# cat 2.sh | tr -s "|" "-"
-aaaaaaaaa-bbbbbbb-c-d
-e-fffff-bbbbbg
-h-i-j-k
-1-2-a-s-d-a-s
-a-b-c-1-2-3
wc命令
wc指令可以计算文件的字节数,词数,或者列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
注:在Linux系统中,一段连续的数字或字母组合为一个词
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数
格式:
wc [OPTION]... [FILE]...
参数:
-c
:统计文件的字节(Bytes)数-l
:统计文件的行数-w
:统计文件中的单词个数,默认以空白字符作为分隔符
实例如下:
# 统计bytes
# 查看2.sh内容
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 单文件
[root@localhost ~]# wc 2.sh
5 5 76 2.sh # 对应数字:行数,单词数,字节数
[root@localhost ~]# wc -c 2.sh
76 2.sh # bytes数
[root@localhost ~]# wc -w 2.sh
5 2.sh # 单词数
[root@localhost ~]# wc -l 2.sh
5 2.sh # 行数 # 多文件
# 不加参数默认都输出
[root@localhost ~]# wc 2.sh 3.sh 4.sh
5 5 76 2.sh # 第一个5代表行数未5,单词数5,字节数76
5 5 99 3.sh
6 6 42 4.sh
16 16 217 total [root@localhost ~]# cat 2.sh 3.sh 4.sh | wc
16 16 217
# 这样相当于将三个文件的行数,单词书,字节数求和输出
# 加参数
[root@localhost ~]# wc -c 2.sh 3.sh 4.sh
76 2.sh # 文件字节总和
99 3.sh
42 4.sh
217 total
[root@localhost ~]# wc -l 2.sh 3.sh 4.sh
5 2.sh # 文件行数总和
5 3.sh
6 4.sh
16 total
[root@localhost ~]# wc -w 2.sh 3.sh 4.sh
5 2.sh # 文件单词数总和
5 3.sh
6 4.sh
16 total
# 上面的例子是多文件统计
三剑客 - sed
sed,三大剑客之一,sed是一款流媒体编辑器,用来对文本进行过滤,修改操作等
注:grep用来过滤文本,sed用来修改文本,awk用来处理文本
格式:
sed [参数] '处理规则' [操作对象]
参数:
-e
:允许多个脚本被执行,多项编辑-n
:取消默认输出,就是静默输出-i
:就地编辑,直接修改源文件(慎用)-r
:使用拓展正则表达式(和egrep一样)-f
:指定sed匹配规则脚本文件
编辑模式:
d
:删除模式p
:打印(P打印第一行)a
:在当前行后添加一行或多行i
:在当前行上一行插入文本(直接修改,原文内容 也会更改)r
:从文件中读取w
:将指定行写入文件y
:将字符转换成另一个字符s
:替换指定的字符(每一行只替换一次)g
:获得内存缓冲区的内容,并替代当前,相当于全部执行i
:忽略大小写(和s模式一起使用的时候,不是单独使用)&
:已经匹配字符串标记- 定位:(使用两个斜线)
定位分类:
数字定位:
sed ‘行号+模式’ file
-- 指定行定位sed '/^g/d' 2.sh
正则定位:
sed ‘正则+模式’ file
-- 正则指定开头内容sed '3,/^g/d' 2.sh
数字和正则定位:
sed ‘数字,正则+模式’ file
-- 指定行,和开头sed '3,/^g/d' 2.sh
正则和正则定位:
sed ‘正则,正则+模式’ file
-- 指定以g和k开头sed '/^g/,/^j/d' 2.sh
处理规则可以使用正则,也可以使用-f指定文件
实例如下:
d模式——删除模式
# 删除
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 删除第二行
[root@localhost ~]# sed '2d' 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 删除第一行和第二行
[root@localhost ~]# sed '1,2d' 2.sh
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# -e参数,多个脚本同时操作,删除1到2行,和五行
[root@localhost ~]# sed -e '1,2d' -e '5d' 2.sh
|h|i|j|k
|1|2|a|s|d|a|s
# -n参数,静默
[root@localhost ~]# sed -n -e '1,2d' -e '5d' 2.sh
[root@localhost ~]# echo $?
0 # 0代表成功,非0代表相反
# -f参数,搭配文件使用
# 在r.sh 中编写正则:/b/d --删除带有b的行
[root@localhost ~]# sed -r '/b/d' 2.sh
|h|i|j|k
|1|2|a|s|d|a|s
[root@localhost ~]# sed -f r.txt 2.sh
|h|i|j|k
|1|2|a|s|d|a|s
# 这样两种结果是一样的
p模式——打印
# 查看2.sh
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 打印第一行
[root@localhost ~]# sed "1p" 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# -n,静默输出
[root@localhost ~]# sed -n "1p" 2.sh
|aaaaaaaaa|bbbbbbb|c|d
# 这样就只打印p模式指定的那行
# -e ,多项操作
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 删除第一行,打印第五行
[root@localhost ~]# sed -e "1d" -e "5p" 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# -i,直接修改源文件,就地编辑
# 修改前
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
# 修改
[root@localhost ~]# sed -i "7p" 2.sh
# 修改后增加了一行
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
a模式,在当前行后添加一行或多行
# 在第一行下添加xxxx
[root@localhost ~]# sed '1axxxxxxx' 2.sh
|aaaaaaaaa|bbbbbbb|c|d
xxxxxxx
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
i模式,在指定行前一行插入
[root@localhost ~]# sed '7i马叉虫' 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
马叉虫
|a|b|c|1|2|3
|a|b|c|1|2|3
c模式,替换当前行
[root@localhost ~]# cat 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
# 替换第一行
[root@localhost ~]# sed '1cxxxxxxx' 2.sh
xxxxxxx
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
r模式,在文件中读内容
[root@localhost ~]# cat 3.sh
|1|2|3|5|6|2|1|3|7|8
|3|4|4|5|4|6|7|8|9|8
|2|3|4|5|4|6|5|7
|3|4|6|8|9|0|7|0|7
|3|2|4|2|4|2|4|2|3|4
# 在3.sh中读取2.sh
[root@localhost ~]# sed '5r 2.sh' 3.sh
|1|2|3|5|6|2|1|3|7|8
|3|4|4|5|4|6|7|8|9|8
|2|3|4|5|4|6|5|7
|3|4|6|8|9|0|7|0|7
|3|2|4|2|4|2|4|2|3|4
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
w模式,将指定行写入文件
# 把第一行到第七行写入到input文件中
[root@localhost ~]# sed '1,7w input.txt' 2.sh
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
[root@localhost ~]# cat input.txt
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|aaaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
y模式,将字符替换成另外一个
# 将第一行到第三行的a替换成A,有a就替换
[root@localhost ~]# sed '1,3y/a/A/' 2.sh
|AAAAAAAAA|bbbbbbb|c|d
|AAAAAAAAA|bbbbbbb|c|d
|AAAAAAAAA|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
s模式,字符串转换
# 将字符串转换成另一个字符串(每一行只替换一次)
[root@localhost ~]# sed 's/a/啊/' 2.sh
|啊aaaaaaaa|bbbbbbb|c|d
|啊aaaaaaaa|bbbbbbb|c|d
|啊aaaaaaaa|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|啊|s|d|a|s
|啊|b|c|1|2|3
|啊|b|c|1|2|3
g模式,全部执行
# 全部替换
[root@localhost ~]# sed 's/a/啊/g' 2.sh
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|啊|s|d|啊|s
|啊|b|c|1|2|3
|啊|b|c|1|2|3
i模式,忽略大小写
# 和s模式一起使用
[root@localhost ~]# cat 2.sh
|AAAAAAAAA|bbbbbbb|c|d
|AAAAAAAAA|bbbbbbb|c|d
|AAAAAAAAA|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|a|s|d|a|s
|a|b|c|1|2|3
|a|b|c|1|2|3
# 忽略大小写
[root@localhost ~]# sed 's/a/啊/gi' 2.sh
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|啊啊啊啊啊啊啊啊啊|bbbbbbb|c|d
|e|fffff|bbbbbg
|h|i|j|k
|1|2|啊|s|d|啊|s
|啊|b|c|1|2|3
|啊|b|c|1|2|3
&的使用
将nginx.conf中每一行之前增加注释
[root@localhost ~]# sed 's/.*/#&/g' /etc/nginx/nginx.conf
练习:
# 将nginx.conf中的注释行全部去掉
sed '/^ *#/d' /etc/nginx/nginx.conf
# 将nginx.conf中每一行之前增加注释
sed 's/.*/#&/g' /etc/nginx/nginx.conf
# 一键修改本机的ip
# 要求如下:
# 192.168.15.100 ---> 192.168.15.101
# 172.16.1.100 ---> 172.16.1.101
sed -i 's/.100/.101/g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
# 将/etc/passwd中的root修改成ROOT
sed -i 's/root/ROOT/g' /etc/passwd
[cut命令参考博文]((38条消息) Linux字符截取命令-cut_小工匠-CSDN博客_cut命令)
[tr命令参考](Linux tr命令 | 菜鸟教程 (runoob.com))
Linux 三剑客之sed的更多相关文章
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- day14 linux三剑客之sed命令
day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...
- Linux 三剑客 -- awk sed grep
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客之sed命令
一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- linux三剑客之sed深度实践
参数: -a:追加文本到指定行后 -i:插入文本到指定行前 1.单行增加 [root@redhat~]# sed ' 2a 6,f ' linux.tet 1,a 2,b 6,f 3,c 4 ...
- 【linux三剑客】sed命令
sed - stream editor for filtering and transforming text sed 流编辑器 strem edition,实现对文件的增删改替换查是Linux中第二 ...
- Linux三剑客之sed
sed sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像.sed按顺序逐行读取文件.然后,它执行为该行指定的所有操作,并在完成请求的修改之后的内容显示出来,也可 ...
随机推荐
- Codeforces Gym 101221G Metal Processing Plant(2-SAT)
题目链接 题意:有 \(n\) 个元素,第 \(i\) 个数与第 \(j\) 个数之间有一个权值 \(d_{i,j}\),\(d(i,j)=d(j,i)\). 定义函数 \(D(S)=\max\lim ...
- Atcoder Regular Contest 123 题解
u1s1 我是真的不知道为什么现场这么多人切了 D,感觉 D 对思维要求显然要高于其他 300+ 人切掉的 D 吧(也有可能是 Atc 用户整体水平提升了?) A 开 幕 雷 击(这题似乎 wjz 交 ...
- BZOJ 4556 [HEOI2016/TJOI2016]字符串
BZOJ 4556 [HEOI2016/TJOI2016]字符串 其实题解更多是用后缀数组+数据结构的做法,貌似也不好写. 反正才学了 sam 貌似比较简单的做法. 还是得先二分,然后倍增跳到 $ s ...
- Codeforces 917D - Stranger Trees(矩阵树定理/推式子+组合意义)
Codeforces 题目传送门 & 洛谷题目传送门 刚好看到 wjz 在做这题,心想这题之前好像省选前做过,当时觉得是道挺不错的题,为啥没写题解呢?于是就过来补了,由此可见我真是个大鸽子(( ...
- DirectX12 3D 游戏开发与实战第六章内容
利用Direct3D绘制几何体 学习目标 探索用于定义.存储和绘制几何体数据的Direct接口和方法 学习编写简单的顶点着色器和像素着色器 了解如何用渲染流水线状态对象来配置渲染流水线 理解怎样创建常 ...
- C++20协程实例:携程化的IOCP服务端/客户端
VC支持协程已经有一段时间了,之前一直想不明白协程的意义在哪里,前几天拉屎的时候突然灵光一闪: 以下是伪代码: task server() { for (;;) { sock_context s = ...
- React 16.13.1触发两次render
一段很普通的代码,出发了两次render import React, { useState, useEffect } from 'react' const MouseTracker: React.FC ...
- 商业爬虫学习笔记day2
1. get传参 (1)url中包含中文报错解决方法 urllib.request.quote("包含中文的url", safe = "string.printtable ...
- Oracle异常处理——ORA-01502:索引或这类索引的分区处于不可用状态
Oracle异常处理--ORA-01502:索引或这类索引的分区处于不可用状态参考自:https://www.cnblogs.com/lijiaman/p/9277149.html 1.原因分析经过查 ...
- Linux基础命令---htpasswd创建密码文件
htpasswd htpasswd指令用来创建和更新用于基本认证的用户认证密码文件.htpasswd指令必须对密码文件有读写权限,否则会返回错误码. 此命令的适用范围:RedHat.RHEL.Ubun ...