次のような巨大なデータファイル.txtがあります。
calls...
12311 34213 13344 12345 34532
23345 24445 22445 12344 12333
34456 22211 12334 12234 23344
23345 24445 22445 12344 12333
最初の行(ここに書かれた呼び出し)を削除したいです。
私は次のコマンドを使用しました。
sed '1d' input.txt > output.txt
これにより、「通話...」が削除されます。しかし、問題は他の行も削除されることです。内部の他の回線を削除せずに通話を削除するのに役立つ可能性がある他の提案がある人はいますか?このコマンドを使用すると、実際のデータには117,000行と10,000列があるため、行数は68,645列、116,999列にする必要があります。ここに示す例のように、小さなデータで sed を試みると、行数は変わりませんが、実際のデータでは変更されます。本当に混乱しています。なぜですか?
答え1
使用できるtail
tail -n +2 input.txt > output.txt
ファイルの2行目から始まる行を印刷します(+記号を参照)。
答え2
awk
次のコマンドを使用することもできます。
例1:
awk '{gsub("^calls\.+", "");print}' input.txt > output.txt
行を削除input.txt
しますoutput.txt
。
例2:
awk '!/^calls\.+/{print}' input.txt > output.txt
awk
これにより、コマンドで指定されたパターンを除くすべての行が印刷されます。
答え3
パターンアドレス指定の使用
GNU sedを使用すると、パターンアドレスを使用してコマンドを制限できます。たとえば、
sed -r '/^calls\.{3}$/d' input.txt
一致するパターンで始まる行だけが削除されます。
答え4
これが私が使用するものです:
df | awk ' {if(NR>1) print}'
cat file | awk ' {if(NR>1) print}'
またはスクリプトから:
#!/bin/awk -f
{
if(NR>1) print
}
それから
cat file | nohead.awk