![](/img/trans.png)
[英]How do I delete a matching line, the line above and the one below it, using sed?
[英]How do I delete matching text with sed but keep the rest of the line?
我有一個格式字符串,通常是以下格式:
PRODUCT_NAME-VERSION-OS(-INSTALLER)?.SUFFIX
我只想刪除其VERSION
部分。 VERSION
定義為匹配的內容: [0-9]+\\.[0-9]+\\.[0-9]+
。 因此,我想執行以下操作: echo NAME | sed -i "\\-/[0-9]+\\.[0-9]+\\.[0-9]+/d
echo NAME | sed -i "\\-/[0-9]+\\.[0-9]+\\.[0-9]+/d
以便獲得PRODUCT_NAME-OS(-INSTALLER)?.SUFFIX
。
我怎么做?
例如
sed
刪除在匹配的行上進行。 因此,在示例中,您將刪除整行。 你應該前往換人代替。 看下面的例子:
$ sed -E 's/(.*)-[0-9]+\.[0-9]+\.[0-9]+(.*)/\1\2/'
<<< "Dropbox-1.0.0-win32-setup.exe"
Dropbox-win32-setup.exe
$ sed -E 's/(.*)-[0-9]+\.[0-9]+\.[0-9]+(.*)/\1\2/'
<<< "gdrive-2.32.1-linux.deb"
gdrive-linux.deb
$ sed -E 's/(.*)-[0-9]+\.[0-9]+\.[0-9]+(.*)/\1\2/'
<<< "azure-92.0.3-mac-osx"
azure-mac-osx
只需將所有內容從第一-
第二移除-
cat file
PRODUCT_NAME-VERSION-OS-INSTALLER.SUFFIX
PRODUCT_NAME-VERSION-OS.SUFFIX
Dropbox-1.0.0-win32-setup.exe
gdrive-2.32.1-linux.deb
azure-92.0.3-mac-osx
sed 's/-.*-/-/' file
PRODUCT_NAME-INSTALLER.SUFFIX
PRODUCT_NAME-OS.SUFFIX
Dropbox-setup.exe
gdrive-linux.deb
azure-osx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.