2017-04-12 77 views
-1

我有多个源文件以ABC *开头,我必须从每个文件中删除第一行,有一个请让我知道如何到达。如何通过命令或脚本从多个文件中删除第一行

由于我是Unix新手,我可以删除单个文件,如“tail -n +2”。 不知道如何删除多个文件。

+0

请提供一个代码示例,以便我们能够更好地为您提供帮助。 –

+0

谢谢!但是,当你提出堆栈溢出的问题时,这是**你**的标准过程。请参阅[这里](http://stackoverflow.com/help/mcve)了解更多信息。 –

+0

嗨,哈德森请找到这个例子。我的文件看起来像ABC123.dat,ABC234.dat。 ABC345.dat ,. ABC675.dat ,.从每个文件我需要删除第一条记录(整条线)。就像我有很多文件,每个文件名都以ABC *开头。 – Deesh

回答

0

您可以循环使用做到这一点:

for file in abc*; do 
    tail -n +2 $file 
done 

如果您需要保存编辑,您可以在tail命令后添加>重定向到tail结果发送到一个新的文件。

0

用awk:

$ ls 
bar baz foo 
$ awk 'FNR==1{close(f);f="new-"FILENAME}FNR>1{print>f}' foo bar baz 
$ ls 
bar baz foo new-bar new-baz new-foo 

解释:

FNR==1 { close(f); f="new-"FILENAME } # 1st of each file, close previous file 
FNR>1 { print>f }      # after the 1st record print to file 

您可以使用awk '...' ABC*作为文件名(S)。 new-ABC*将被创建。

相关问题