从文本文件中的多行剪切键入的行号

时间:2016-04-05 17:55:52

标签: shell text emacs tar

我有一个很长的文本文件,在文件中列出的每个路径前都有数字,如下例所示:

1) /some/path/here/file.txt
1) /some/path/here/1file.edf
2) /some/another_path/here/2file.txt
3) /some/other_path/here/3file.txt
3) /some/other_path/here/4file.edf
3) /some/other_path/here/5file.edf
...

此文件持续数千行。我要做的是从这些行的第一部分中删除数字,以便我可以在没有数字干扰的情况下对文件列表进行tar。有没有办法可以使用Emacs的Shell命令来做到这一点?

2 个答案:

答案 0 :(得分:2)

正则表达式是你的朋友。您可以在emacs或命令行中执行此操作。在emacs中,如果按C-M-%(控制+ alt + shift + 5)或运行query-replace-regexp,它将提示您找到正则表达式,另一个要替换。如果您使用^[0-9]*)(请注意,此末尾有空格),然后将“repalce”留空,您将无需替换数字,paren和空格。如果从文件的顶部开始,您可以键入!来替换所有文件,或者逐个检查它是否有效。

在正则表达式中,^匹配行的开头[0-9]表示匹配0到9范围内的单个字符,*表示“匹配以前任意数量的字符” “,然后)匹配文字填充(在emacs中这是默认值,在shell中你可能需要使用\)来逃避它。

答案 1 :(得分:0)

类似的东西:

cat list.txt | cut -f 2 -d' ' | xargs tar czf archive.tar.gz