我有一個 .tsv 檔案,我想在 Unix 中過濾它。
我想選擇特定列中具有特定數值(例如 30700、10600 等)的行。
到目前為止,我已經在網上看到過根據列中的一個特定值選擇行的示例。但是,就我而言,特定列可以有大約 20-30 個可接受的值。在這種情況下,我如何處理我的資料的子集?
uj5u.com熱心網友回復:
正確的做法是:
BEGIN {
split("30700 10600",tmp)
for (i in tmp) {
vals[tmp[i]]
}
FS = "\t"
}
$1 in vals
uj5u.com熱心網友回復:
awk '{ if ($1 == 1 || $1 == 2) print $0; }'
會做的伎倆;但是沒有人因為寫了 40 個 if 陳述句而得到提升;所以你可能想考慮:
BEGIN { a[1] = a[2] = 1; }
{ if (a[$1]) print $0; }
作為模板。
改為查看 Ed 的解決方案。
awk 的好處;它是如此靈活的語言,可能有幾十種不同的方法來解決這個問題。awk 的難點;它是如此靈活的語言,可能有幾十種不同的方法來解決這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326772.html
上一篇:合并每兩個連續的行unix?
下一篇:與fork()共享記憶體
