2017-11-30 11 views
3

したがって、最後の3000行を別の別のファイルに移動し、 3000行。最後のn行を新しいファイルにコピーして元のn行を削除する

head: illegal line count -- -3000 

私がどこか分からない:

tail -n 3000 fer2017-testing-reduced.arff >> fer2017-training-reduced-3000-more-instances.arff; head -n -3000 fer2017-testing-reduced.arff > fer2017-testing-reduced-3000-less-instances.arff 

をしかし、私はこれを実行すると、私はエラーを取得する次のように私はMacと私が使用したコマンドを使用してい

です私は間違っている、またはこれはMacの問題かもしれない場合は?

答えて

3

headのすべてのバージョンで、負の行数がサポートされているわけではありません。 macOSにデフォルトでインストールされているものはありません。あなたは(あなたがHomebrewがインストールされている場合は、あなたがこれを行うことができます:brew install coreutils)をcoreutilsがインストールされている場合は

あなたはghead -n -3000を使用することができるはずです。他のツールが許可されている場合

2

POSIX head and tail not feature equivalentheadのPOSIXバージョン-nオプションの負の整数を受け入れないない理由からより多くの情報をお読みください。 POSIX headコマンドのドキュメントから

Qutoting、

-n number The first number lines of each input file shall be copied to standard output. The application shall ensure that the number option-argument is a positive decimal integer.

あなたがより良いファイルの末尾に行3000から開始するtail -n +3001head -n -3000を変更しています。または、GNUがサポートするheadコマンドを使用します。このコマンドは、MacではGNU coreutilsの一部として利用できます。

3

、おそらくsed

sed -n '3000,${p}' file > filenew # print lines 3000 to end to new file 
sed -i '3000,${d}' file # Use inplace edit to delete lines 3000 to end from orig. 

ここでの利点$自動最後の行と一致していることであるために行きます。

関連する問題