用awk+printf印出要的行數 - Linux

Table of Contents

大家好

我想請問一下

有辦法

用awk+printf然後用"輸入"的方式叫電腦直接印出某列我要的檔案嗎?

ex:

cat dataset |awk '
{
if($1>=135 && $1<=136 && $2>=50 &&
$2<=51 && $3>=0.4 && $3<=0.6)
printf "%f %f %f %f %f\n",$1, $2, $3, $42, $43}
'>data.out


就是在printf那邊

我要印出dataest中 第1, 2, 3, 42, 43列資料到data.out

現在就是我有沒有辦法用輸入的

例如告訴電腦我要輸入五次 每次分別是1 2 3 4 5 or 下次是7 8 2 3 9

有找過一些資料 現在卡在不知道怎麼讓變數活在awk中
(一開始令類型也還沒很懂)

雖然我知道shell scripts不用編譯

但是每次一直改也很煩

不知道沒有辦法?
(一樣的工作 給perl或 python去做會比較快嗎?)

謝謝

--

All Comments

Dorothy avatarDorothy2012-06-26
awk -v c1=$1 -v c2=$2 -v '{print $c1" "$c2" "$c3}'
你可以用-v將shell變數傳入awk中