CU上的问题5:
这条语句有什么作用?
sed -if /script/scr.sedcc test.txt
这题看似简单 但没仔细看过man的人估计都会答错
这题出的让我佩服的五体投地..
题解:
-i是参数 f是-i的子参数 意为rename的追加拓展名 不写则rename源文件名 即为覆盖
/script/ 正则匹配即含有script的行
s是替换函数(sed内部命令)
c是替换分隔符即相当于“/”
sed -if /script/scr.sedcc test.txt 解析为 sed -iABC '/script/s/r.sed//' test.txt
意思是: 将test.txt文件含有script的行中的r.sed替换为空,并且将更改后的文件追加拓展名后生成新文件名,而且重命名后的文件与原来的文件的innode节点完全相同
看过程:
[root@shell opt]# rm -rf a.*
[root@shell opt]# touch a.1
[root@shell opt]# ll -i a.*
328942 -rw-r--r-- 1 root root 0 05-19 09:34 a.1
[root@shell opt]# sed -iABC '/script/s/r.sed//' a.1
[root@shell opt]# ll -i a.*
328944 -rw-r--r-- 1 root root 0 05-19 09:35 a.1
328942 -rw-r--r-- 1 root root 0 05-19 09:34 a.1ABC
[root@shell opt]#