我要求从文件中搜索x=<followed by any values>
这样的模式并显示模式,即x=<followed by any values>
,仅在屏幕上,而不是整行。我怎么能在Linux中做到这一点?
答案 0 :(得分:1)
我有3个答案,从简单(但有警告)到复杂(但万无一失):
1)如果你的模式每行不会出现多次,你可以这样做(假设你的shell是
)PATTERN="x="
sed "s/.*\($PATTERN\).*/\1/g" your_file | grep "$PATTERN"
2)如果你的模式每行出现多次,那就更难了。一种简单而又愚蠢的方法是使用一个特殊的字符,这些字符不会出现在任何具有您的模式的行上,例如&#34; @&#34;:
PATTERN="x="
SPECIAL="@"
grep "$PATTERN" your_file | sed "s/$PATTERN/$SPECIAL/g" \
| sed "s/[^$SPECIAL]//g" | sed "s/$SPECIAL/$PATTERN/g"
(这不会将每行的输出模式分开,例如,如果源行有3次&#34; x =&#34;,您将看到x=x=x=
,这是通过在最后一个sed中添加空格来轻松修复
3)总是有效的东西无论如何:
PATTERN="x="
awk "NF>1{for(i=1;i<NF;i++) printf FS; print \"\"}" \
FS="$PATTERN" your_file