我有一個文件,其中每 156780 行有一個標題行。
我想將 awk 命令應用於除標題行的第二列之外的每一行的第一列。
或至少標題行應該不受影響。
誰能幫我做到這一點。
我使用了 awk 指令,如下所示
awk 'NR>2 {printf("%10i %15.8E\n",$1,$2);}' fort.74 > fort.75
答案1
標題行將滿足條件NR % 156780 == 0
。這意味著您可以使用
awk 'NR % 156780 != 0 { process non-header row }' ...
……或者可能
awk '(NR - 1) % 156780 != 0 { process non-header row }' ...
(NR
第一個行為 1,而不是零)
如果您想不受影響地通過標題行:
awk '(NR - 1) % 156780 != 0 { process non-header row } (NR - 1) % 156780 == 0 { print }' ...
也就是說,只需print
為非標題行所用操作的逆條件添加一個單獨的操作即可。
答案2
簡單的怎麼樣:
awk '(NR==1) { header=$0; rem="we retrieve the header content";}
( $0 != header ) { process non header lines here ... }'
(您可以選擇在第一行中新增“; next”,但如果沒有,它也允許您在小檔案上進行測試,例如原始檔案的前 5 行:第二行不應處理如果與標題相符則行。