linux---sed指令

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 'dtest.txt2,d' test.txt **2,d**:刪除從第二行到最後一行的內容
n,Nd:刪除從n行到N行的內容
/^str/d: 刪除以str字符開頭的行
sed ‘/^my/d’ test.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章