我在 ubuntu 上有一个 txt 文件,其中包含
-rw-r--r-- 1 ftp ftp 0 2 月 26 日 11:37 6.txt
-rw-r--r-- 1 ftp ftp 0 2 月 26 日 11:37 7.txt
-rw-r--r- - 1 ftp ftp 0 2 月 26 日 11:37 8.txt
我可以只想检索文件名吗
6.txt
7.txt
8.txt
到另一个文本文件
awk '{print $NF}' your_file >only_names.txt
或者
perl -lane '{print $F[scalar(@F)-1]}' your_file >only_names.txt
如果要更改现有文件:
perl -i -lane '{print $F[scalar(@F)-1]}' your_file
cut -d' ' -f 9 f1.txt > f2.txt
如果您的文件包含空间,它可能看起来像
-rw-r--r-- 1 ftp ftp 0 Feb 26 11:37 6.txt
-rw-r--r-- 1 ftp ftp 0 Feb 26 11:37 7.txt
-rw-r--r-- 1 ftp ftp 0 Feb 26 11:37 a filename with space
用这个
cut -d' ' -f9- f1.txt > f2.txt
如果您的文件名非常统一,我会使用 grep 和正则表达式:
$ grep --color=never -oE '[[:alnum:]]+\.[[:alnum:]]{3}$' files.txt
以上禁用颜色(可能会干扰),只输出匹配部分(-o),使用扩展正则表达式(-E),然后找到一个或多个字母数字字符,后跟一个点(“.”),然后正好是三个字母数字字符([[:alnum:]])和一个行尾('$')。