ZhangZhihui's Blog  

Search and print matched lines:

scnzzh@ZUBT1:~/zzh$ sed -n '/ExecStart/p' docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 

Search and replace pattern:

scnzzh@ZUBT:~$ echo 'app[01:100].com' | sed 's/.*\[/\[/'
[01:100].com

 

Search and replace in file:

scnzzh@ZUBT1:~/zzh$ grep '\-H fd://' test.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
scnzzh@ZUBT1:~/zzh$ sed -i 's/-H fd:\/\//-H fd:\/\/ -H tcp:\/\/10.0.2.5:2375/' test.service
scnzzh@ZUBT1:~/zzh$ grep '\-H fd://' test.service
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://10.0.2.5:2375 --containerd=/run/containerd/containerd.sock

 

Multiple search and delete following 2 lines in file:

sed -i -e '/\(zabbix_wrapper.pl\|type="thread"\|type="collect"\)/,+2d' $line

 

'<' and '>' don't need to be escaped:

sed -i 's/<depend>PARALLEL_THREAD<\/depend>/<depend>NONE<\/depend>/g' $line

 

Change position:

cat test1
first:second
one:two
sed 's/\(.*\):\(.*\)/\2:\1/' test1
second:first
two:one

 

Use semicolon to execute multiple commands:

cnzzh@zubt1:~/zzh$ seq 6
1
2
3
4
5
6
scnzzh@zubt1:~/zzh$ seq 6 | sed '1d;3d;5d'
2
4
6

 

Replace multiple blank lines with one:

scnzzh@zubt1:~/zzh$ cat a.txt
1


2


3





4

5
scnzzh@zubt1:~/zzh$ sed '/^$/N;/^\n$/D' a.txt
1

2

3

4

5

$      Match the last line.

d Delete pattern space. Start next cycle.

D If pattern space contains no newline, start a normal new cycle as if the d command was issued. Otherwise, delete text in the pattern space up to the first newline, and restart cycle with the resultant pattern space, without reading a new line of input.

n N    Read/append the next line of input into the pattern space.

 

Remove all blank lines:

scnzzh@zubt1:~/zzh$ sed '/^$/d' a.txt
1
2
3
4
5

 

Remove lines those only contain whitespaces:

scnzzh@zubt1:~/zzh$ cat a.txt
        

aaa
    bbb
        

ccc
scnzzh@zubt1:~/zzh$ sed -r '/^\s*$/d' a.txt
aaa
    bbb
ccc

Replace multiple whitespace lines to one line:

scnzzh@zubt1:~/zzh$ sed '/^\s*$/N;/^\s*$/D' a.txt

aaa
    bbb

ccc

 

Replace values of parameters/variables:

/home/scnzzh/zzh $> cat b.txt
binpath=/PATH/TO/SCRIPTS/
aa_binpath=/PATH/TO/AA/

/home/scnzzh/zzh $> sed "s/binpath=\(.*\)/binpath=aaa/" b.txt
binpath=aaa
aa_binpath=aaa

/home/scnzzh/zzh $> sed "s/^binpath=\(.*\)/binpath=aaa/" b.txt
binpath=aaa
aa_binpath=/PATH/TO/AA/

 

posted on 2020-11-24 11:35  ZhangZhihuiAAA  阅读(104)  评论(0编辑  收藏  举报