一般使用awk,
參考資料大多是提到用pipeline 把一行文字當輸入,
用-F 取得各欄位的值,
(這是awk的強項, 當然都會圍繞在這些用法上啊!)
很少會提到要怎樣把bash的變數傳進去.
說穿了就是awk -v var=value 而已.
男人也有提到, 只是在查詢時只想到"input parameter", "pipeline" 這幾個關鍵字,
卻壓根沒想到要用"var"搜尋.
最簡單的用法
awk -v var_in_awk=${VAR_IN_BASH} ' { print var_in_awk } '
記得${VAR_IN_BASH}不能用小括號()代替.
實際的用法, 列出"2011-08"以前的檔案:
#!/bin/bash
ROOT_DIR=$1
MONTH_AGO="2011-08"
find $ROOT_DIR -type f |
sed 's/^/ls -l /g' |
sh |
awk -v month_ago=${MONTH_AGO} '{ if ( $6 <= month_ago ) { print $8 } }'
# $6是"ls -l" 輸出的檔案日期(第六欄位), $8是 "ls -l" 的檔名 第八欄位
搞了一天才從stackoverflow問到答案,
書到用時方恨少!!!
全站熱搜
留言列表