0019. shell命令--rev

目录

19. shell命令--rev

功能说明

语法格式

选项说明

实践操作


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 ~]# 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值