我有一个文本文件
abc-AB9-3.2-def
abc-5.6-def
我需要获得之前的字符串" - "符号后跟"任何数字"。
即。我需要在第一种情况下获得-3之前的字符串,在第二种情况下获得-5。
预期输出为:
abc-AB9
abc
请帮忙。我的分隔符是" - "其次是任何数字。
答案 0 :(得分:4)
您可以尝试此awk
,
awk -F"-[0-9]+" '{print $1}' yourfile
(OR)
awk 'BEGIN{ FS="-[0-9]+" } {print $1}' yourfile
另一种方式(如 Jotne 评论):
awk -F"-[0-9]" '{$0=$1}1' yourfile
答案 1 :(得分:2)
使用sed
删除不相关的部分:
sed 's/-[0-9].*//' input
答案 2 :(得分:1)
通过sed,
$ sed 's/^\(.*\)-[0-9].*/\1/g' file
abc-AB9
abc
通过grep,
$ grep -oP '.*(?=-\d)' file
abc-AB9
abc
答案 3 :(得分:0)
perl -lne 'print $1 if(/(.*?)-\d.*/)' your_file
测试:
> cat temp
abc-AB9-3.2-def
abc-5.6-def
> perl -lne 'print $1 if(/(.*?)-\d.*/)' temp
abc-AB9
abc
>