如何在 Windows] 上用逗号 [Linux 替换文本
How to replace text with comma [Linux on Windows]
我们从客户那里收到这些具有这种粗略格式的自动电子邮件:
VP##0-X1-#####-#[Revision #:Document title]
VP##0-X2-#####-#[Revision #:Document title]
VP##0-X3-#####-#[Revision #:Document title]
我想做的事情:
- 用逗号替换
[Revision
- 用逗号替换
:
- 删除
]
这样我就可以将其转换为 CSV,然后使用一些 excel 魔法来填充我们的跟踪 sheet。
我试过使用 sed
这种通用格式:
sed -i 's,[Revision ,\,,g' <FILE>
但我不知道如何为这种情况添加逗号。
这就是我最终想要得到的:
VP##0-X1-#####-#,#,Document title
VP##0-X2-#####-#,#,Document title
VP##0-X3-#####-#,#,ocument title
感谢任何和所有见解。
我在 Windows 上使用 Ubuntu。
[
必须转义,因为它是正则表达式的特殊字符。此外,在 sed
命令中使用另一个字符而不是 ,
作为分隔符可能会更好。这应该可以解决问题:
sed -i 's/\[Revision /,/g' <FILE>
您可以使用:
sed -Ei 's/(.*)(\[Revision)(.*)(:)(.*)(])/,,/' <FILE>
用一行和一个回显测试它:
$ echo "[VP##0-X1-#####-#[Revision #:Document title]" | sed -E 's/(.*)(\[Revision)(.*)(:)(.*)(])/,,/'
[VP##0-X1-#####-#, #,Document title
解释:
'(.*)(\[Revision)(.*)(:)(.*)(])
sed
命令前半部分的正则表达式分为()
定义的6组。
第 2 组 (\[Revision)
将匹配 "[Revision"
,第 4 组 (:)
将匹配 ":"
,您要替换的字符串部分。
/,,/'
在命令的第二部分中,可以使用相同的组作为替换文本,所以我使用组1(</code>)来保留<code>"[Revision"
之前的所有内容,然后使用逗号','
,然后使用第 3 组 (</code>)(<code>"[Revision"
和 ":"
之间的所有内容),逗号 ","
,最后使用第 5 组(</code>).第 6 组将匹配最后一个 <code>']'
,因此它未被使用,因为您希望将其删除。
对于 sed,/
是一个很常见的分隔符。另外,方括号是特殊字符,需要转义。
用逗号替换[Revision
sed -i 's/\[Revision /,/g' <FILE>
用逗号替换:
sed -i 's/:/,/g' <FILE>
删除]
sed -i 's/\]//g' <FILE>
sed 's/\[Revision /,/;s/:/,/;s/]//' inputfile
VP##0-X1-#####-#, #,Document title
VP##0-X2-#####-#, #,Document title
VP##0-X3-#####-#, #,Document title
无需使用 back-referencing
或使用多个 sed
命令来进行繁重的工作。您可以从单个 sed
命令中发出多个替换命令:
语法:
sed 's/a/A/' file
sed 's/b/B/' file
sed 's/c/C/' file
可以合并为一个命令:
sed 's/a/A/;s/b/B/;s/c/C/' file #note the semicolon separating multiple replace operations.
我们从客户那里收到这些具有这种粗略格式的自动电子邮件:
VP##0-X1-#####-#[Revision #:Document title]
VP##0-X2-#####-#[Revision #:Document title]
VP##0-X3-#####-#[Revision #:Document title]
我想做的事情:
- 用逗号替换
[Revision
- 用逗号替换
:
- 删除
]
这样我就可以将其转换为 CSV,然后使用一些 excel 魔法来填充我们的跟踪 sheet。
我试过使用 sed
这种通用格式:
sed -i 's,[Revision ,\,,g' <FILE>
但我不知道如何为这种情况添加逗号。
这就是我最终想要得到的:
VP##0-X1-#####-#,#,Document title
VP##0-X2-#####-#,#,Document title
VP##0-X3-#####-#,#,ocument title
感谢任何和所有见解。
我在 Windows 上使用 Ubuntu。
[
必须转义,因为它是正则表达式的特殊字符。此外,在 sed
命令中使用另一个字符而不是 ,
作为分隔符可能会更好。这应该可以解决问题:
sed -i 's/\[Revision /,/g' <FILE>
您可以使用:
sed -Ei 's/(.*)(\[Revision)(.*)(:)(.*)(])/,,/' <FILE>
用一行和一个回显测试它:
$ echo "[VP##0-X1-#####-#[Revision #:Document title]" | sed -E 's/(.*)(\[Revision)(.*)(:)(.*)(])/,,/'
[VP##0-X1-#####-#, #,Document title
解释:
'(.*)(\[Revision)(.*)(:)(.*)(])
sed
命令前半部分的正则表达式分为()
定义的6组。
第 2 组 (\[Revision)
将匹配 "[Revision"
,第 4 组 (:)
将匹配 ":"
,您要替换的字符串部分。
/,,/'
在命令的第二部分中,可以使用相同的组作为替换文本,所以我使用组1(</code>)来保留<code>"[Revision"
之前的所有内容,然后使用逗号','
,然后使用第 3 组 (</code>)(<code>"[Revision"
和 ":"
之间的所有内容),逗号 ","
,最后使用第 5 组(</code>).第 6 组将匹配最后一个 <code>']'
,因此它未被使用,因为您希望将其删除。
对于 sed,/
是一个很常见的分隔符。另外,方括号是特殊字符,需要转义。
用逗号替换[Revision
sed -i 's/\[Revision /,/g' <FILE>
用逗号替换:
sed -i 's/:/,/g' <FILE>
删除]
sed -i 's/\]//g' <FILE>
sed 's/\[Revision /,/;s/:/,/;s/]//' inputfile
VP##0-X1-#####-#, #,Document title
VP##0-X2-#####-#, #,Document title
VP##0-X3-#####-#, #,Document title
无需使用 back-referencing
或使用多个 sed
命令来进行繁重的工作。您可以从单个 sed
命令中发出多个替换命令:
语法:
sed 's/a/A/' file
sed 's/b/B/' file
sed 's/c/C/' file
可以合并为一个命令:
sed 's/a/A/;s/b/B/;s/c/C/' file #note the semicolon separating multiple replace operations.