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