【发布时间】:2022-01-25 07:53:50
【问题描述】:
假设我有这句话
It's {raining|snowing|cold} outside
我想要的是在括号之间随机提取一个单词,我用awk -vRS="}" -vFS="|" '{print $2}' 做了这个(仍在努力随机提取它们)。输出通常是第二个单词,在我们的例子中是snowing。
问题是输出只有snowing,而我想要的实际输出类似于It's snowing outside,那么如何从括号中提取任何单词并仅替换为一个单词。
【问题讨论】:
-
如果要随机选择三个单词中的一个,为什么要选择这么复杂的方法呢?制作一个包含三个单词的数组并使用
RANDOM % 3选择其中一个。 -
那句话只是一个例子,实际上我有更多的句子在括号内包含这样的词,我设法只提取了第二个词,这应该不是问题,我出于好奇询问了随机化
-
我会解析句子以生成数组,然后选择(通过随机化或其他方式)。
-
很公平,如何将括号内的单词替换为仅从中提取的一个单词
-
你想走捷径。也许它存在,但我会首先为您正在处理的格式编写一个解析器,以获取一组数据并从中选择一个单词。如果您只需要 一个 单词,而不管哪个单词都没有关系,您可以 regex 去掉可选单词。