gpt4 book ai didi

linux - 使用 grep 或 sed 从匹配行中删除正则表达式组

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:00 27 4
gpt4 key购买 nike

我有一个文件,内容如下:

- 2 equal files of size 288903252
- 2 equal files of size 284164096
"C:\E\100p disk util bak\Softwares\OSs\gparted-live-0.26.1-1-i686.iso"
"H:\Softwares\Linux\gparted-live-0.26.1-1-i686.iso"
- 2 equal files of size 277436598
- 2 equal files of size 161356649
"H:\Softwares\Dev Tools\Eclipse\Windows\eclipse-java-luna-SR1a-win32-x86_64.zip"
- 35 equal files of size 97078976
"C:\Windows\System32\DriverStore\FileRepository\nvacwu.inf_amd64_9934c34dc6ca0c4b\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvamwu.inf_amd64_d4715679184092a8\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvaowu.inf_amd64_785608ed2524cdea\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvblwu.inf_amd64_31f54e2d1ba058d5\NvCplSetupInt.exe"

我想删除那些带有 - X equal files of size 的行,但后面没有实际的文件路径。例如第一个和第三个要点:

- 2 equal files of size 284164096
"C:\E\100p disk util bak\Softwares\OSs\gparted-live-0.26.1-1-i686.iso"
"H:\Softwares\Linux\gparted-live-0.26.1-1-i686.iso"
- 2 equal files of size 161356649
"H:\Softwares\Dev Tools\Eclipse\Windows\eclipse-java-luna-SR1a-win32-x86_64.zip"
- 35 equal files of size 97078976
"C:\Windows\System32\DriverStore\FileRepository\nvacwu.inf_amd64_9934c34dc6ca0c4b\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvamwu.inf_amd64_d4715679184092a8\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvaowu.inf_amd64_785608ed2524cdea\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvblwu.inf_amd64_31f54e2d1ba058d5\NvCplSetupInt.exe"

我组成了一个regex匹配这些行:

(^-.*\n)-

可以在上面的链接中进行检查。我想删除基本上是整行的第一组。但无法猜测我如何使用 grepsed 执行相同的操作。我们可以在单个命令中执行此操作吗?

最佳答案

使用 sed

sed '/^-/{N;/\n-/D}' file

- 2 equal files of size 284164096
"C:\E\100p disk util bak\Softwares\OSs\gparted-live-0.26.1-1-i686.iso"
"H:\Softwares\Linux\gparted-live-0.26.1-1-i686.iso"
- 2 equal files of size 161356649
"H:\Softwares\Dev Tools\Eclipse\Windows\eclipse-java-luna-SR1a-win32-x86_64.zip"
- 35 equal files of size 97078976
"C:\Windows\System32\DriverStore\FileRepository\nvacwu.inf_amd64_9934c34dc6ca0c4b\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvamwu.inf_amd64_d4715679184092a8\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvaowu.inf_amd64_785608ed2524cdea\NvCplSetupInt.exe"
"C:\Windows\System32\DriverStore\FileRepository\nvblwu.inf_amd64_31f54e2d1ba058d5\NvCplSetupInt.exe"

任何版本sed的便携版

sed -e '/^-/{N' -e '/\
-/D' -e '}' file

如果你想删除最后一行如果是-

sed -e '/^-/{$d' -e 'N' -e '/\
-/D' -e '}' file

关于linux - 使用 grep 或 sed 从匹配行中删除正则表达式组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44085273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com