【发布时间】:2021-07-17 02:25:23
【问题描述】:
我试图将每个以“/”开头的单词大写,同时使用 sed 忽略不以“/”开头的同一个单词。例如,如果输出有
word1
/word1
我想保留第一个 word1 不变并将第二个 word1 大写
word1
/WORD1
如果文件在同一行中有多个 word1,我希望它大写 word1 的最后一个实例
word1 /word1 /word1
会变成
word1 /word1 /WORD1
我已经尝试过sed 's/word1/\U&/',但它只是将文件中的每个 word1 大写,我不太确定如何在搜索字符串中包含“/”,因为如果我直接添加它只会引发错误。
【问题讨论】:
-
s@/word1@\U&@-- 你不限于/作为唯一可能的标志;这只是一个常见的选择。 -
这似乎适用于上面的示例,但如果在同一行中出现三个 word1,它将大写第二个 word1 并忽略前面带有“/”的第三个。如何使用该命令将每行中最后一次出现的 word1 大写?
-
仅最后一个,还是每个实例包括最后一个?如果您想要 每个 实例,请在最后的印记之后添加
g(在我的第一条评论中的@之后)。而且由于问题的主体并未表明您只想替换最后一个实例,因此请确保您进行了编辑。 -
对不起,我只需要将每行的 word1 的最后一个实例大写。我会立即编辑问题的正文,再次抱歉!
-
好的。 “每个单词”是指“特定单词 word1 的每个实例”,还是“每个字母单词”,还是别的什么?
标签: shell