我有一个字符串
abc \ xyz \ file.txt#4 - blah blah blah
我想要文件编号,所以我做了以下内容 -
abc \ xyz \ file.txt#4 - blah blah blah | sed -e“s / [A-Z,a-z,\,/,。#:, - / s] // g”
它给出了预期的输出 - 4
但是当字符串是 -
时abc \ xyz1 \ file.txt#4 - blah blah blah | sed -e“s / [A-Z,a-z,\,/,。#:, - / s] // g”
它输出为-14。
所以我试图在“#”和“ - ”之间加入字符串 我试过了 -
abc \ xyz1 \ file.txt#4 - blah blah blah | sed's / ^。#//;小号/-. $ //'
但只有在#之前有空格时才有效,在这种情况下不是这样。
我做错了什么?
答案 0 :(得分:3)
尝试使用
sed 's/.*#\([0-9]*\).*/\1/'
这将搜索所有内容,包括`#,后跟零个或多个数字,然后是该行的其余部分。所以搜索字符串匹配整行。
然后将匹配模式(即整行)替换为与转义的parens之间的子模式匹配的部分,即您要查找的 droid 数字。 / p>
要仅打印匹配的行,请使用
sed -n 's/.*#\([0-9]*\).*/\1/p'
其中-n
标志禁止打印每一行的默认行为,p
后缀打印匹配的行。
答案 1 :(得分:0)
试试这个:
echo "abc\xyz1\file.txt#4 - blah blah blah" | sed -e "s|.*#||g" -e "s| -.*||g"