mer*_*011 7 bash awk command-line cut sed
为了简化讨论,让我们N = 3.
我目前提取文件或流中每行的最后三个字符的方法是sed用于捕获组中的最后三个字符,并用该组替换整行.
sed 's/^.*\(.\{3\}\)/\1/'
Run Code Online (Sandbox Code Playgroud)
它有效,但它看起来过于冗长,特别是当我们比较一行中获得前三个字符的方法时.
cut -c -3
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的方法来提取每行中的最后N个字符?
Tia*_*opo 21
这很简单grep -o '...$':
cat /etc/passwd | grep -o '...$'
ash
/sh
/sh
/sh
ync
/sh
/sh
/sh
Run Code Online (Sandbox Code Playgroud)
或者更好的是:
N=3; grep -o ".\{$N\}$" </etc/passwd
ash
/sh
/sh
/sh
ync
/sh
/sh
Run Code Online (Sandbox Code Playgroud)
这样你就可以N根据自己喜欢的价值调整自己.
rev /path/file | cut -c -3 | rev
Run Code Online (Sandbox Code Playgroud)
当这是一个微小的命令时,为什么要强调简洁呢?一般性更为重要:
$ cat file
123456789
abcdefghijklmn
Run Code Online (Sandbox Code Playgroud)
从第4个字符开始打印3个字符:
$ awk '{print substr($0,4,3)}' file
456
def
Run Code Online (Sandbox Code Playgroud)
从第4个字符开始打印3个字符:
$ awk '{print substr($0,length($0)-3,3)}' file
678
klm
Run Code Online (Sandbox Code Playgroud)
要从每行中间的[around]打印3个字符:
$ awk '{print substr($0,(length($0)-3)/2,3)}' file
345
efg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16168 次 |
| 最近记录: |