我在MacOS 10.12中工作,我有100个文件,例如:
My file <structure_is> like this <and_maybe_like> this,
but not quite like this.
But there might be <stuff> like this, too.
我一直在尝试转换&lt;&gt;中的所有项目大写以查看文件如下所示:
My file <STRUCTURE_IS> like this <AND_MAYBE_LIKE> this,
but not quite like this.
But there might be <STUFF> like this, too.
我尝试使用:
find . -name "\*" | xargs sed 's/\<([a-z_][^>]*)\>/\U&/g'
我也尝试过使用gsed(home-brew):
find . -name "\*" | xargs gsed 's/\<([a-z_][^>]*)\>/\U&/g'
但我得到的只是文件本身的内容到stdout。
我该怎么做?
最诚挚的问候!
答案 0 :(得分:1)
这适用于Linux:sed 's/<[^>]*>/\U&/g' file
我不知道\U
是否只是GNU sed。
或者,perl:
perl -pe 's/<.*?>/\U$&/g' file
答案 1 :(得分:0)
<
是文字<
而GNU中的\<
至少是单词分隔符转义序列。因此,只需将您的\<
更改为<
,将\>
更改为>
,您的gsed
脚本就可以正常使用。
除非你知道自己在做什么,否则永远不要逃避角色。如果你想要一个文字字符c
并且不知道你是否需要逃避它,那么你使用[c]
而不是\c
更安全,因为至少前者不能把它变成一个正则表达式元字符。