示例:prod2-03_dl-httpd-prod-8080_access_referer_log.20181111-050000
直到prod2-03_dl-httpd-prod
,我仍然需要价值
因此,基本上我们需要直到第二次出现“-”和数字的值。
我们尝试了以下选项:-
echo "prod2-03_dl-httpd-prod-8080_access_referer_log.20181111-050000" | sed -r 's/([^-][:digit:]+[^-][:digit:]).*/\1/'
答案 0 :(得分:2)
使用pcregrep
和积极的前瞻:
$ echo "prod2-03_dl-httpd-prod-8080_access_referer_log.20181111-050000" |
grep -Po "^[^-]*-.*?(?=-[0-9])"
prod2-03_dl-httpd-prod
解释了一些:
grep -P
:使用PCRE ^
[^-]*
所有非破折号-
后接破折号.*?
后跟任何非贪婪的内容(?=-[0-9])
积极寻找破折号和数字答案 1 :(得分:0)
似乎可以将字符串解析为定界字符串,请使用PdfConverter converter = PdfConverter.getInstance();
File file = new File(Environment.getExternalStorageDirectory().toString(), "file.pdf");
String htmlString = "html code here";
converter.convert(getContext(), htmlString, file);
:
awk
在这里
s="prod2-03_dl-httpd-prod-8080_access_referer_log.20181111-050000"
awk -F'-' '{print $1 "-" $2 "-" $3}' <<< "$s"
# => prod2-03_dl-httpd
awk -F'-' '{sub(/_.*/, "", $5); print $5}' <<< "$s"
# => 8080
awk -F'[-_]' '{print $6}' <<< "$s"
# => 8080
将字段分隔符设置为-F'-'
-
打印从1到3的字段,中间用分隔符{print $1 "-" $2 "-" $3}
删除字段5中第一个sub(/_.*/, "", $5)
开头的所有文本,然后打印出来_
和-
的数目在_
之前是恒定的,则可以使用8080
分隔符,那么[-_]
就足够了。