Shell awk中的多个字段分隔符(字段分隔符在一起)

Shell awk中的多个字段分隔符(字段分隔符在一起),shell,awk,sed,grep,sh,Shell,Awk,Sed,Grep,Sh,我有一个文本文件 abc-AB9-3.2-def abc-5.6-def 我需要得到在“-”符号后面跟“任意数字”的字符串。 我需要在第一种情况下得到-3,第二种情况下得到-5之前的字符串 预期产出为: abc-AB9 abc 请帮忙。我的分隔符是“-”后跟任何数字。您可以尝试使用此awk awk -F"-[0-9]+" '{print $1}' yourfile (或) 另一种方式(正如Jotne所评论的那样): 您可以试试这个awk awk -F"-[0-9]+" '{print

我有一个文本文件

abc-AB9-3.2-def  
abc-5.6-def
我需要得到在“-”符号后面跟“任意数字”的字符串。
我需要在第一种情况下得到-3,第二种情况下得到-5之前的字符串

预期产出为:

abc-AB9
abc

请帮忙。我的分隔符是“-”后跟任何数字。

您可以尝试使用此
awk

awk -F"-[0-9]+" '{print $1}'  yourfile
(或)

另一种方式(正如Jotne所评论的那样):


您可以试试这个
awk

awk -F"-[0-9]+" '{print $1}'  yourfile
(或)

另一种方式(正如Jotne所评论的那样):

通过sed

$ sed 's/^\(.*\)-[0-9].*/\1/g' file
abc-AB9
abc
通过grep

$ grep -oP '.*(?=-\d)' file
abc-AB9
abc
通过sed

$ sed 's/^\(.*\)-[0-9].*/\1/g' file
abc-AB9
abc
通过grep

$ grep -oP '.*(?=-\d)' file
abc-AB9
abc
测试:

测试:


使用
sed
删除不相关的部分:

sed 's/-[0-9].*//' input

使用
sed
删除不相关的部分:

sed 's/-[0-9].*//' input

我认为这是一个GNU awk解决方案。@AvinashRaj这是一个通用的
awk
解决方案。如果这是
RS
,那么您需要
GNU awk
@sat您不需要
+
符号,因为OP表示任何数字,所以
“-[0-9]”
就足够了。您可以将其缩短为:
awk-F“-[0-9]”“{$0=$1}1”文件
我认为这是一个GNU awk解决方案。@AvinashRaj这是一个通用的
awk
解决方案。如果这是
RS
,那么您需要
GNU awk
@sat您不需要
+
符号,因为OP表示任何数字,所以
“-[0-9]”
就足够了。您可以将其缩短为:
awk-F“-[0-9]”“{$0=$1}1”文件