目录
19. shell命令--rev
功能说明
rev 并不是一个标准的 Linux 核心命令,但它是 GNU Coreutils 包中的一部分,因此在大多数 Linux 发行版中都可用。这个命令用于反转行中的字符顺序。
语法格式
SYNOPSIS
rev [options] [file ...]
选项说明
略
实践操作
1. 从标准输入读取
echo "hello" | rev # 将hello反转
2. 读取文件
ls
cat >file1 <<eof # 创建演示文件file1
hello
world
eof
cat file1 # 使用cat查看
rev file1 # 使用rev查看
rev file1 > file2 #将rev查看的结果写入file2文件中
cat file2 # 使用cat查看
rev file2 # 使用rev查看
3. 如果没有 rev 命令,可以借助 awk 命令来实现反序(了解即可)
awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file1
awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file2
rm -rf file1 file2
4. 修改指定文件的最后一个匹配单词(了解即可)
echo "old 1 2 old" #例如想要将最后一个old单词替换成新的new单词
echo "old 1 2 old" |sed 's/old/new/' # 这样只会替换第一个old
echo "old 1 2 old" |sed 's/old/new/g' # 这样所有的old都会被替换
echo "old 1 2 old" |rev # 先将结果反转一下
echo "old 1 2 old" |rev |sed 's/dlo/new/' #将反转的结果替换一下
echo "old 1 2 old" |rev |sed 's/dlo/new/' |rev # 然后再反转一下,但是把new也反转了
echo "old 1 2 old" |rev |sed 's/dlo/wen/' |rev # 这样就达到我们想要的目的了
命令示例:1. 从标准输入读取
echo "hello" | rev
输出结果:
[root@MineGi ~]# echo "hello" | rev
olleh
[root@MineGi ~]#

命令示例:2. 读取文件
cat >file1 <<eof
hello
world
eof
cat file1
rev file1
rev file1 > file2
cat file2
rev file2
输出结果:
[root@MineGi ~]# cat >file1 <<eof
> hello
> world
> eof
[root@MineGi ~]# cat file1
hello
world
[root@MineGi ~]# rev file1
olleh
dlrow
[root@MineGi ~]# rev file1 > file2
[root@MineGi ~]# cat file2
olleh
dlrow
[root@MineGi ~]# rev file2
hello
world
[root@MineGi ~]#

命令示例:3. 如果没有 rev 命令,可以借助 awk 命令来实现反序(了解即可)
awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file1
awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file2
rm -rf file1 file2
输出结果:
[root@MineGi ~]# awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file1
olleh
dlrow
[root@MineGi ~]# awk '{ for(i=length; i>0; i--) printf "%s", substr($0,i,1); print "" }' file2
hello
world
[root@MineGi ~]# rm -rf file1 file2
[root@MineGi ~]#

命令示例:4. 修改指定文件的最后一个匹配单词(了解即可)
echo "old 1 2 old"
echo "old 1 2 old" |sed 's/old/new/'
echo "old 1 2 old" |sed 's/old/new/g'
echo "old 1 2 old" |rev
echo "old 1 2 old" |rev |sed 's/dlo/new/'
echo "old 1 2 old" |rev |sed 's/dlo/new/' |rev
echo "old 1 2 old" |rev |sed 's/dlo/wen/' |rev
输出结果:
[root@MineGi ~]# echo "old 1 2 old"
old 1 2 old
[root@MineGi ~]# echo "old 1 2 old" |sed 's/old/new/'
new 1 2 old
[root@MineGi ~]# echo "old 1 2 old" |sed 's/old/new/g'
new 1 2 new
[root@MineGi ~]# echo "old 1 2 old" |rev
dlo 2 1 dlo
[root@MineGi ~]# echo "old 1 2 old" |rev |sed 's/dlo/new/'
new 2 1 dlo
[root@MineGi ~]# echo "old 1 2 old" |rev |sed 's/dlo/new/' |rev
old 1 2 wen
[root@MineGi ~]# echo "old 1 2 old" |rev |sed 's/dlo/wen/' |rev
old 1 2 new
[root@MineGi ~]#

1万+

被折叠的 条评论
为什么被折叠?



