这应该是非常简单的,但对于我的生活,我今天下午就无法做到这一点。
有问题的文件包含如下所示的行:
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。
答案 0 :(得分:1)
根据你的描述,这应该做:
sed 's/^\([ ][^,]*\)$/> \1/' input
如果行以空格开头,则匹配整行,然后在结尾之前包含除逗号以外的任何内容。
答案 1 :(得分:1)
试试这个:
sed '/^ [^,]*$/s/^/>/'
输出只有带有MIN-3
>
的行
sed默认使用基本正则表达式。因此,+
应该是您脚本中的\+
。我认为这可能是造成时间浪费的问题。但是,你可以添加-r
来让sed使用extended-regex。
答案 2 :(得分:1)
这是一个简单的答案:
sed 's/^ [^,]*$/>&/'