使用AWK或SED等命令行工具反转文本文件中的字符串

时间:2014-12-09 05:17:34

标签: windows text command-line awk reverse

我有一个包含

等行的文本文件
ABCD
1234
bear
Anders Ångström

我需要将其转换为

DBCA
4321
raeb
mörtsgnÅ srednA

我需要在命令行中执行此操作,因此我认为AWK是这项工作的最佳工具,但我可能错了。也许用Regex替换可以做到这一点? Notepad2知道Regex替换。

稍后编辑:我需要在Windows中执行此操作(我使用的是GNUWin32工具),我需要使用它来处理Å,ö,ë,Ş,Ĕ等Unicode字符。

6 个答案:

答案 0 :(得分:3)

使用rev命令,如下所示。

$ rev < file
DCBA
4321
raeb

答案 1 :(得分:1)

使用rev命令尝试此操作:

rev File

<强>示例:

AMD$ cat File
ABCD
1234
bear
AMD$ rev File
DCBA
4321
raeb


man rev : 
The rev utility copies the specified files to the standard output,
reversing the order of characters in every line.  If no files are speci-
fied, the standard input is read.

答案 2 :(得分:1)

这是awk

awk -vFS= '{do printf $(NF);while(--NF>0);print ""}' file
DCBA
4321
raeb

或者像这样:

awk -vFS= '{for (i=NF;i>=1;i--) printf $(i);print ""}' file
DCBA
4321
raeb

要正确使用printf,请将其从printf $(i)更改为printf "%s",$(i)

答案 3 :(得分:1)

如果您对Sed解决方案感兴趣,请点击此处:

+$ sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' <<EOF
+> ABCD
+> 1234
+> bear
+> EOF
DCBA
4321
raeb

您可以在http://sed.sourceforge.net/sed1line.txt的Sed中找到更多只写程序。

答案 4 :(得分:0)

perl可能会这样做 但不确定您是否有perl用于Windows。如果没有,请将文件复制到Linux服务器,转换它。

perl -ne 'chomp;print scalar reverse . "\n";' file
DCBA
4321
raeb
mörtsgnÅ srednA

这个bash脚本也适用于linux

cat convert
#!/bin/bash
input="$1"
for (( i=${#input}-1; i>=0; i-- ));do
        reverse="$reverse${input:$i:1}"
done
echo "$reverse"

./convert Ångström
mörtsgnÅ

答案 5 :(得分:-1)

您可以使用rev命令。

rev < filename > output filename

输出将存储在文件中。如果您没有给出它将在stdout中打印