使用Sed修改具有初始空格且包含逗号的行

使用Sed修改具有初始空格且包含逗号的行,sed,Sed,这应该是非常简单的,但就我个人而言,今天下午我不能让gnu来做这件事 有问题的文件有如下行: PART NUMBER PART NUMBER QUANTITY WEIGHT -999 -4,999 -9,999 w/ UL APPROVAL MIN-3 我需要在像“MIN-3”这样的每一行前面加一个“>”字符,唯一区别于其他行的是两

这应该是非常简单的,但就我个人而言,今天下午我不能让gnu来做这件事

有问题的文件有如下行:

                        PART NUMBER  PART NUMBER     QUANTITY WEIGHT         -999   -4,999  -9,999
w/ UL APPROVAL
                                          MIN-3
我需要在像“MIN-3”这样的每一行前面加一个“>”字符,唯一区别于其他行的是两件事:

  • 第一个字符是空格“”
  • 这些行不包含逗号
  • 我尝试过以下任何一种方法:

    /^ +[^,]+$/ s/^/>/
    
    /^ +[\w\-]+$/ s/^/>/
    
    /^ +(\w|\-)+$/ s/^/>/
    
    我承认,我对sed有些陌生。:)


    编辑:使用perl或awk的答案也可以,尽管我最初的目标是sed。

    根据您的描述,这应该可以:

    sed 's/^\([ ][^,]*\)$/> \1/' input
    

    如果一行以空格开头,然后在结尾处不包含逗号,则与整行匹配。

    根据您的描述,这应该是:

    sed 's/^\([ ][^,]*\)$/> \1/' input
    
    如果一行以空格开头,然后在结尾处不包含逗号,则与整行匹配。

    尝试以下操作:

    sed '/^ [^,]*$/s/^/>/'
    
    输出为,仅带
    MIN-3
    和前导

    sed默认使用基本正则表达式。因此,脚本中的
    +
    应该是
    \+
    。我想这可能是浪费你时间的问题。但是,您可以添加
    -r
    ,让sed使用扩展正则表达式。

    尝试以下方法:

    sed '/^ [^,]*$/s/^/>/'
    
    输出为,仅带
    MIN-3
    和前导


    sed默认使用基本正则表达式。因此,脚本中的
    +
    应该是
    \+
    。我想这可能是浪费你时间的问题。但是,您可以添加
    -r
    ,让sed使用扩展正则表达式。

    以下是一个简单的答案:

    sed 's/^ [^,]*$/>&/'
    

    以下是一个简单的答案:

    sed 's/^ [^,]*$/>&/'
    

    哈这正是我的问题所在。ThxHa!这正是我的问题所在。谢谢