2017-04-12 70 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*將被創建。

相關問題