这应该是非常简单的,但对于我的生活来说,今天下午我就是无法做到这一点。
所讨论的文件的行如下所示:
PART NUMBER PART NUMBER QUANTITY WEIGHT -999 -4,999 -9,999
w/ UL APPROVAL
MIN-3我需要用">“字符在每一行(如"MIN-3”行)前面加上一个“>”字符,唯一能明确区分这些行和其他行的是两件事:
我已经尝试过以下任何一种方法:
/^ +[^,]+$/ s/^/>/
/^ +[\w\-]+$/ s/^/>/
/^ +(\w|\-)+$/ s/^/>/我得承认,我对苏富比有点陌生。:)
编辑:使用perl或awk的答案也是值得赞赏的,尽管我的初始目标是sed。
发布于 2013-05-23 22:19:01
试试这个:
sed '/^ [^,]*$/s/^/>/'输出是,只有带前导MIN-3的行>
sed默认使用基本正则表达式。因此,+应该是脚本中的\+。我觉得这可能是浪费你时间的问题。不过,您可以添加-r,以便sed使用extended。
发布于 2013-05-23 22:15:50
根据你的描述,这应该是:
sed 's/^\([ ][^,]*\)$/> \1/' input如果行以空格开头,然后包含除逗号以外的任何内容,则与完整行匹配。
发布于 2013-05-23 22:19:59
以下是一个简单的答案:
sed 's/^ [^,]*$/>&/'https://stackoverflow.com/questions/16724698
复制相似问题