首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk镜像(反转)行

awk镜像(反转)行
EN

Stack Overflow用户
提问于 2013-01-26 15:45:28
回答 4查看 460关注 0票数 2

我想反转文件的行(单个单词)。

代码语言:javascript
复制
cat dummy

Hugo
Dumas
Camus

所需输出如下所示:

代码语言:javascript
复制
Hugo oguH
Dumas samuD
Camus sumaC

这可能是用awk做的最简单的事情,但是perl oneliner也会是grate。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-26 15:50:19

不需要perlawk,只需使用pasterev,以及进程替换(否则只需使用临时文件):

代码语言:javascript
复制
paste -d ' ' file <(rev file)

结果:

代码语言:javascript
复制
Hugo oguH
Dumas samuD
Camus sumaC
票数 4
EN

Stack Overflow用户

发布于 2013-01-26 15:53:08

代码语言:javascript
复制
#!/usr/bin/awk -f

{
    row = $0
    s = ""
    for (i = length(row); i > 0; --i)
        s = s substr(row, i, 1)
    print row " " s
}

对于输入中的每一行,循环遍历从每个位置获取一个长度为1的子字符串的字符,并连接以生成反转的字符串。然后打印行、空格和反转的字符串。

在Python中更简单!

代码语言:javascript
复制
#!/usr/bin/env python

import sys

for line in sys.stdin:
    row = line.strip()
    print(row + ' ' + row[::-1])

对于标准输入中的每一行,去掉空格以去掉换行符。然后打印此行,空格,并反转此行。使用带有默认开始和结束的" slice“进行反转,但步骤为-1,以使slice获得相反的字符。

票数 2
EN

Stack Overflow用户

发布于 2013-01-26 18:09:22

代码语言:javascript
复制
$ perl -pi -le '$_ .= $" . reverse' file.txt

说明(详见perldoc perlrun ):

逐行mode

  • -i:中的
  • -p:处理和打印文件支持就地editing
  • -l:自动处理行结束符(当与well
  • $":一起使用时隐式地使用space
  • $_ .= $" . reverse,并将chomp作为-p附加$\另一种写入' '作为其缺省值的方式是its

$_对应于该行包含的字符串(减去chomp-ed行尾)。因此,在这里,.=连接为$_单个空格($"),后跟reverse-d字符串。请注意,不需要显式指定reverse($_),因为在标量上下文中,如果没有指定参数,reverse()将反转$_

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14534967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档