Unix 如何通过命令或脚本从多个文件中删除第一行

Unix 如何通过命令或脚本从多个文件中删除第一行,unix,Unix,我有多个源文件以ABC*开头,我必须从每个文件中删除第一行,请让我知道如何访问 由于我是Unix新手,我可以删除单个文件,如“tail-n+2”。 不知道如何删除多个文件。您可以使用for循环执行此操作: for file in abc*; do tail -n +2 $file done 如果需要保存编辑,可以在tail命令后添加重定向,将tail的结果发送到新文件。使用awk: $ ls bar baz foo $ awk 'FNR==1{close(f);f="new-"FILE

我有多个源文件以ABC*开头,我必须从每个文件中删除第一行,请让我知道如何访问

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

您可以使用for循环执行此操作:

for file in abc*; do
    tail -n +2 $file
done
如果需要保存编辑,可以在
tail
命令后添加
重定向,将
tail
的结果发送到新文件。

使用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*
作为文件名<代码>新的ABC*s将被创建。

请提供一个代码示例,以便我们能够更好地帮助您。谢谢!但是,当您提出有关堆栈溢出的问题时,发布示例是一个标准过程。有关更多信息,请参阅。嗨,Hudson,请查找示例,。我的文件看起来像ABC123.dat、ABC234.dat,。ABC345.dat,。ABC675.dat,。我需要从每个文件中删除第一条记录(整行)。像这样,我有很多文件,每个文件名都以ABC*开头。再一次,你最好在你的初始问题中发布一个示例代码块。以下示例是其他用户发布的,而不是您。