数百万の行と数千の列/フィールドを含む入力ファイルがあります。誰かが私に説明できますか、同じ出力を生成する以下の2つのawkメソッドが、CPU実行時間の点で大きく異なるのはなぜですか?
175.0秒:
awk 'BEGIN{FS=":| "}NR>1{field1=$1;field2=$2;$1="";$2="";print field1":"field2,field1":"field2,field2,$0}' file_in > file_out
19.7秒:
cat file_in | awk 'BEGIN{FS=":"}NR>1{print $1,$2}' | awk '{print $1":"$2,$1":"$2,$0}' | cut -d " " -f 3 --complement > file_out
これは、数百の列/フィールドを持つ1つのfile_inの2行目と3行目です(行間に改行はありません)。
1:1000071 C T 1 0 0 1 0 0
1:1000759 C T 1 0 0 0 1 0
file_outの対応する行は次のとおりです。
1:1000071 1:1000071 1000071 C T 1 0 0 1 0 0
1:1000759 1:1000759 1000759 C T 1 0 0 0 1 0