我有以下文件:
$cat file
.
.
.
/image/trafficbulletin/black.jpg
.
.
Run Code Online (Sandbox Code Playgroud)
当他发现“黑色”时,他应该只删除该行中的所有其他内容!我希望结果是
.
.
.
black
.
.
Run Code Online (Sandbox Code Playgroud)
我正在使用
$ grep -o -P '(?<=tin/).*(?=.jpg)' file
但是这会删除所有其他行:(
grep -o 将只输出匹配模式的字符串。
尝试sed使用反向引用:
sed 's/.*\(black\).*/\1/' file
Run Code Online (Sandbox Code Playgroud)
一些变化:
正如评论中指出的那样,在您的情况下,您还可以用所需的字符串替换与模式匹配的行:
sed '/black/s/.*/black/' file
Run Code Online (Sandbox Code Playgroud)
这相当于:
sed 's/.*black.*/black/' file
Run Code Online (Sandbox Code Playgroud)
使用 GNU sed,您还可以c在一行中使用该命令:
sed '/black/c black' file
Run Code Online (Sandbox Code Playgroud)