指令 sed -e 's/\(~\).*\(~\)//
對文字檔執行什麼操作?我不明白。我在工作中遇到過它。
答案1
該命令(如果在末尾添加缺少的單引號)會將文件的所有行打印到終端,但如果~
任何行上至少有兩個(波形符)字符,則第一個和最後一個之間的位~
將通過s
中的替換指令( )來刪除sed
。
例子:
$ cat file
1 2 3 ~ 4
1~2~3
Here is ~ the last ~ line ~ THE END
$ sed -e 's/\(~\).*\(~\)//' file
1 2 3 ~ 4
13
Here is THE END
但\(
不需要\)
(因為表達式中沒有使用反向引用),也-e
可以省略 (因為只有一個表達式),因此該指令相當於
sed 's/~.*~//' file
所以,它不做文件本身的任何內容,但它會讀取並修改文件的內容,產生經過處理的文本,然後您可以使用重定向 ( sed ... >newfile
) 將其保存在新文件中。
反向引用可以在此命令中使用,如下所示:
sed 's/\(~\).*\1//' file
即,匹配 a ~
,然後匹配一些其他文本,然後匹配我們在第一組中匹配的相同內容\(...\)
(波浪號)。但這並不能節省打字時間,也不能使命令更易於維護或理解,因此它不會對sed 's/~.*~//' file
.