【问题标题】:How to remove some entries in a file?如何删除文件中的某些条目?
【发布时间】:2013-06-29 17:43:05
【问题描述】:
-rw-r--r-- 1 root root 3178 Jun 29 16:08 FTS_TESTCAMPAIGN1_29_06_2013_160823.html
-rw-r--r-- 1 root root  711 Jun 29 16:08 FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823.html
-rw-r--r-- 1 root root  405 Jun 29 16:08 FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823.csv
-rw-r--r-- 1 root root  466 Jun 29 16:08 FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823
-rw-r--r-- 1 root root 3178 Jun 29 16:14 FTS_TESTCAMPAIGN1_29_06_2013_161404.html
-rw-r--r-- 1 root root  711 Jun 29 16:14 FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404.html
-rw-r--r-- 1 root root  405 Jun 29 16:14 FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404.csv
-rw-r--r-- 1 root root  466 Jun 29 16:14 FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404
-rw-r--r-- 1 root root    0 Jun 29 16:25 log

我在上面的文件中列出了目录。我需要输出为:

FTS_TESTCAMPAIGN1_29_06_2013_160823.html
FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823.html
FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823.csv
FTS_ABORT_BACKUP_JOB_1_29_06_2013_160823
FTS_TESTCAMPAIGN1_29_06_2013_161404.html
FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404.html
FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404.csv
FTS_ABORT_BACKUP_JOB_1_29_06_2013_161404
log

我如何使用 Perl 来做到这一点?

【问题讨论】:

    标签: perl perl-module perl-data-structures


    【解决方案1】:

    只要目录列表保持相同的结构,以下快速而肮脏的 perl 单行代码就可以完成这项工作:

    perl -pi.bak -ae 's/^.*$/$F[8]/' FILENAME
    

    【讨论】:

      【解决方案2】:
      use File::Listing qw(parse_dir);
      use File::Slurp qw(read_file);
      
      print $_->[0], "\n" for parse_dir read_file 'ls-l';
      

      【讨论】:

        【解决方案3】:
        perl -naE 'say $F[$#F]' file
        

        即启用自动拆分并打印每行的最后一个字段。

        类似地,在awk

        awk '{print $NF}' file
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-17
          • 1970-01-01
          • 1970-01-01
          • 2023-01-10
          • 2014-02-05
          • 1970-01-01
          • 2020-10-07
          • 1970-01-01
          相关资源
          最近更新 更多