“rev”在现实生活中有什么应用?

Wol*_*olf 15 command-line string

根据https://www.geeksforgeeks.org/rev-command-in-linux-with-examples/

Linux 中的 rev 命令用于按字符反转行。

例如

wolf@linux:~$ rev
Hello World!
!dlroW olleH
Run Code Online (Sandbox Code Playgroud)

rev在现实生活中应用的例子是什么?

为什么我们需要反向字符串?

Kus*_*nda 49

rev在从字符串的一个方向更容易表达或执行操作的情况下,非标准实用程序很有用,但它与您所拥有的相反。

例如,要使用(假设文本到达标准输入)从文本行中获取最后一个制表符分隔的字段cut

rev | cut -f 1 | rev
Run Code Online (Sandbox Code Playgroud)

由于无法将“最后一个字段”表达为cut,因此更容易反转行并获取第一个字段。显然有人awk -F '\t' '{ print $NF }'会争辩说使用会是更好的解决方案,但我们并不总是首先考虑最佳解决方案。

(当前)接受的如何从文本行从末尾开始剪切(选择)一个字段的答案将这种方法与 一起使用rev,而亚军的答案显示了替代方法。

另一个例子是将逗号插入到大整数中,这样12345678就变成12,345,678(三个一组的原始数字,从右边开始):

echo '12345678' | rev | sed -e 's/.../&,/g' -e 's/,$//' | rev
Run Code Online (Sandbox Code Playgroud)

另请参阅您将字符串反转用于什么?有关更多示例,请访问 SoftwareEngineering SE 站点。

  • 在研究 Unix V8(`rev` 的来源)中,`rev` 和 `revpag` 命令记录在同一个手册页中。使用 `pr`、`troff` 和 `xcan`(不知道那是什么)作为 SEE ALSO,建议文档准备和渲染上下文。可能是在页面的另一面打印镜像字体(例如压花或其他东西)。 (4认同)
  • (xcan 是在那个时代(80 年代初)在佳能激光打印机上打印的命令。请参阅 v8 中的“can”手册页) (2认同)
  • @RedGrittyBrick 你可能会认为 `awk` 是一种构建工具的工具,就像你通过 shell 脚本和 C 程序等构建用于做特定事情的工具一样。可以看到我在这个答案中展示的简短的 `awk` 程序作为提取制表符分隔文件最后一个字段的工具。这可以稍后与其他工具结合来做其他事情。 (2认同)
  • @RedGrittyBrick awk 是一种编程语言。它并不比 C 或 Perl 更违背 Unix 哲学。 (2认同)

Sco*_*cot 9

作为一个具体的例子,它rev是一个有用的工具,可以帮助反向补充 DNA 序列,这在生物信息学中经常使用。

请记住,DNA是由核苷酸组成的双链聚合物。通常,DNA 只是通过其核苷酸(A、C、G、T)的第一个字母来建模。如果一条链的“序列”是已知的,另一条链也是如此,因为 A 总是与 T 配对,而 C 总是与 G 配对。 因此,双链 DNA 序列可能是这样的:

ACGTGTCAT
TGCACAGTA
Run Code Online (Sandbox Code Playgroud)

关于 DNA 和两条链的另一件事 - 它们具有方向性,并且通常从 5' 端到 3' 端“读取”。股线具有反平行的方向性,因此以相反的方向读取 - 请参见下图。

5'    ACGTGTCAT    3'
3'    TGCACAGTA    5'
Run Code Online (Sandbox Code Playgroud)

现在 - 在给定另一条链的情况下确定一条链通常很有用,并且由于序列可能很长(长度为数千或数百万个核苷酸),这是以编程方式完成的。一种方便的方法是使用rev(和tr):

echo ACGTGTCAT | tr ACGT TGCA | rev
ATGACACGT
Run Code Online (Sandbox Code Playgroud)

  • 根据应用的不同,比例可以有很大的不同。我经常使用这样的代码,但主要用于小规模。例如,我可能有大约 20 个长度为 8 个核苷酸的序列,我需要它们的反向互补。 (2认同)