Linux 中如何截取文本的最后几个字符

 

001、awk输出最后的两个字符

a、

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt                          ## 测试数据
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# awk -F "" '{print $(NF - 1), $NF}' a.txt    ## awk输出文本的最后两个字符
4 8
e r
r c

 

b、使用数字直接指定

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt                              ## 测试文本     
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test2]# awk -F "" '{tmp = substr($0, length($0) - 2, length($0)); print tmp}' a.txt     ## 截取最后3个字符
248
eer
erc
[root@PC1 test2]# awk -F "" '{tmp = substr($0, length($0) - 5, length($0)); print tmp}' a.txt     ## 截取最后6个字符
fd3248
iuyeer
dgherc

 

002、grep输出最后的两个字符

a、

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt               ## 测试文件
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# grep "..$" a.txt
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# grep -o "..$" a.txt    ## 输出最后两个字符
48
er
rc

 

b、直接用数字指定匹配次数

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt                  ## 测试文件
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# grep -E ".{3}$" a.txt      
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# grep -oE ".{3}$" a.txt     ## 输出文本的最后3个字符
248
eer
erc
[root@PC1 test1]# grep -oE ".{5}$" a.txt     ## 输出文本的最后5个字符
d3248
uyeer
gherc

 

003、rev + cut实现

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt                         ## 测试数据
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# rev a.txt | cut -c 1-3 | rev      ## 取最后三个字符
248
eer
erc
[root@PC1 test1]# rev a.txt | cut -c 1-5 | rev      ## 取最后5个字符
d3248
uyeer
gherc

 

004、 sed实现

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt                             ## 测试数据
325dsfd3248
fdsfgeiuyeer
sfdgdgherc
[root@PC1 test1]# sed 's/\(.*\)\(...$\)/\2/' a.txt      ## 取最后三个字符
248
eer
erc

 。

 

posted @ 2024-02-07 11:12  小鲨鱼2018  阅读(231)  评论(0编辑  收藏  举报