Bash 如何仅在父项所在的行上删除父项前的文本?
我有以下文件:Bash 如何仅在父项所在的行上删除父项前的文本?,bash,shell,Bash,Shell,我有以下文件: $cat file . . . /image/trafficbulletin/black.jpg . . 当他发现“黑色”时,他应该删除该行中的所有其他内容! 我希望结果是 . . . black . . 我正在使用 $grep-o-P'(?grep-o将只输出与模式匹配的字符串 使用反向引用尝试使用sed: sed 's/.*\(black\).*/\1/' file 一些变体: 正如注释中指出的,在您的情况下,您还可以用所需字符串替换与模式匹配的行: sed '/bla
$cat file
.
.
.
/image/trafficbulletin/black.jpg
.
.
当他发现“黑色”时,他应该删除该行中的所有其他内容!
我希望结果是
.
.
.
black
.
.
我正在使用
$grep-o-P'(?grep-o
将只输出与模式匹配的字符串
使用反向引用尝试使用sed
:
sed 's/.*\(black\).*/\1/' file
一些变体:
正如注释中指出的,在您的情况下,您还可以用所需字符串替换与模式匹配的行:
sed '/black/s/.*/black/' file
这相当于:
sed 's/.*black.*/black/' file
使用GNU时,您还可以在一行程序中使用c
命令:
sed '/black/c black' file
+1.另一方面,由于搜索模式是固定的(而不是正则表达式),这是等效的:sed'/black/s/*/black/'文件
非常好!