sed -n -e '1,/^exit 0$/!p' $0 > "${dir_tmp}/src.tar.gz" 2>/dev/null
選項和命令的區別
選項是sed之後跟着的-n/-e/-i等,命令是沒有-,可能在引號裏面使用的p/s/g/等
命令s:替換操作,‘s/This/aaa/’
選項-n/命令p: -n選項
和p命令
一起使用表示只打印那些發生替換的行,原文件不改變
sed -n ‘s/This/aaa/p’ test.txt
[root@localhost ~]# cat test.txt
MacBook-Pro:tmp maxincai$ cat test.txt
my cat's name is betty
This is your dog
my dog's name is frank
This is your fish
my fish's name is george
This is your goat This
my goat's name is adam
# -n選項+p命令打印出發生了替換的行
[root@localhost ~]# sed -n 's/This/aaa/p' test.txt
aaa is your dog
aaa is your fish
aaa is your goat This # 這個This沒有替換掉
# 源文件並沒有改變
[root@localhost ~]# cat test.txt
MacBook-Pro:tmp maxincai$ cat test.txt
my cat's name is betty
This is your dog
my dog's name is frank
This is your fish
my fish's name is george
This is your goat This
my goat's name is adam
選項-i: 文件中每一行的第一個This替換爲this,改變原文件
沒有加上i選項,就不會改變原文件的內容
[root@localhost ~]# cat test.txt
MacBook-Pro:tmp maxincai$ cat test.txt
my cat's name is betty
This is your dog
my dog's name is frank
This is your fish
my fish's name is george
This is your goat This
my goat's name is adam
[root@localhost ~]# sed -i 's/This/this/' test.txt
[root@localhost ~]# cat test.txt
MacBook-Pro:tmp maxincai$ cat test.txt
my cat's name is betty
this is your dog
my dog's name is frank
this is your fish
my fish's name is george
this is your goat This # 這個This沒有被替換
my goat's name is adam
命令後綴/g:會替換每一行中的所有匹配
root@Kylin:~# cat test.txt
my cat's name is betty
This is your dog
my dog's name is frank
This is your fish
my fish's name is george
This is your goat This
my goat's name is adam
# 此時打印所有的改變的內容
root@Kylin:~# sed 's/This/aaa/g' test.txt
my cat's name is betty
aaa is your dog
my dog's name is frank
aaa is your fish
my fish's name is george
aaa is your goat aaa # 這個This被替換掉了
my goat's name is adam
root@Kylin:~#
d:刪除操作
[root@localhost ~]# cat test.txt
my cat's name is betty
this is your this dog
my dog's name is this frank
this is your fish
my fish's name is this george
this is your goat this
my goat's name is this adam
[root@localhost ~]# sed '/^$/d' test.txt
my cat's name is betty
this is your this dog
my dog's name is this frank
this is your fish
my fish's name is this george
this is your goat this
my goat's name is this adam
# 原文件沒有改變
[root@localhost ~]# cat test.txt
my cat's name is betty
this is your this dog
my dog's name is this frank
this is your fish
my fish's name is this george
this is your goat this
my goat's name is this adam
# 只有加上i選項,纔會對原文件進行修改
[root@localhost ~]# sed -i '/^$/d' test.txt
[root@localhost ~]# cat test.txt
my cat's name is betty
this is your this dog
my dog's name is this frank
this is your fish
my fish's name is this george
this is your goat this
my goat's name is this adam
Nd:刪除第N行內容
sed ‘nd’ test.txt
$d:刪除最後一行
sed 'd**:刪除從第二行到最後一行的內容
n,Nd:刪除從n行到N行的內容
/^str/d: 刪除以str字符開頭的行
sed ‘/^my/d’ test.txt