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