本文介绍了有没有一种更干净的方法来获取每行的最后N个字符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为简化讨论,让N = 3.

我当前提取文件或流中每行最后三个字符的方法是使用sed捕获组中的最后三个字符,并用该组替换整行.

My current approach to extracting the last three characters of every line in a file or stream is to use sed to capture the last three characters in a group and replace the entire line with that group.

sed 's/^.*\(.\{3\}\)/\1/'

它可以工作,但看起来太冗长,特别是当我们比较将 first 排成一行的三个字符的方法时.

It works but it seems excessively verbose, especially when we compare to a method for getting the first three characters in a line.

cut -c -3

是否有一种更干净的方法来提取每行中的最后N个字符?

推荐答案

使用grep -o '...$'非常简单:

cat /etc/passwd  | grep -o '...$'
ash
/sh
/sh
/sh
ync
/sh
/sh
/sh

或者更好:

N=3; grep -o ".\{$N\}$" </etc/passwd
ash
/sh
/sh
/sh
ync
/sh
/sh

这样,您就可以将N调整为所需的任何值.

That way you can adjust your N for whatever value you like.

这篇关于有没有一种更干净的方法来获取每行的最后N个字符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 14:58