New FAMILUG

The PyMiers

Thursday, 10 April 2014

[cmd] rev

$ whatis rev
rev (1)              - reverse lines of a file or files

$ echo familug | rev
gulimaf

Một bài toán có sử dụng rev như 1 thành phần quan trọng trong 1thuật toán thông minh:

Yêu cầu: lấy tất cả những phần sau dấu / sau cùng

/etc/pacman.d/gnupg/gpg.conf
/etc/pacman.d/gnupg/pubring.gpg~
/etc/pacman.d/gnupg/secring.gpg
/etc/pacman.d/mirrorlist.pacnew



Lời giải
Trong python, việc này dễ dàng làm được bởi tính năng dùng index là số âm:

In [1]: s = '/XXX/yyy/ZZZ'

In [2]: s.split('/')[-1]
Out[2]: 'ZZZ
Với bash, có một số cách trong đó có cách dùng revcut như sau:

$ echo /xxx/YYy/ZZZ | rev | cut -d'/' -f1 | rev
ZZZ

Hết!

2 comments:

  1. Trong python có thể dùng s.rsplit('/')[0]

    ReplyDelete
  2. POSIXly:

    s='/XXX/yyy/ZZZ'; printf '%s\n' "${s##*/}"

    ReplyDelete