我想反转文件的行(单个单词)。
cat dummy
Hugo
Dumas
Camus所需输出如下所示:
Hugo oguH
Dumas samuD
Camus sumaC这可能是用awk做的最简单的事情,但是perl oneliner也会是grate。
发布于 2013-01-26 15:50:19
不需要perl或awk,只需使用paste和rev,以及进程替换(否则只需使用临时文件):
paste -d ' ' file <(rev file)结果:
Hugo oguH
Dumas samuD
Camus sumaC发布于 2013-01-26 15:53:08
#!/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中更简单!
#!/usr/bin/env python
import sys
for line in sys.stdin:
row = line.strip()
print(row + ' ' + row[::-1])对于标准输入中的每一行,去掉空格以去掉换行符。然后打印此行,空格,并反转此行。使用带有默认开始和结束的" slice“进行反转,但步骤为-1,以使slice获得相反的字符。
发布于 2013-01-26 18:09:22
$ 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()将反转$_。
https://stackoverflow.com/questions/14534967
复制相似问题