2006-12-21

Color under shell and C

剛剛看到一篇文章有關color的

在這邊

有時候還蠻有用的喔
只利用
\033作為escape
\033[0;31;47mChanged\033[0m
整個改變顏色



Changed

2006-12-07

C shell重導符號

>    redirect stdout to file
>>   redirect stdout to end of file
>&   redirect stdout and stderr to file
>>&  redirect stdout and stderr to end of file
>!   redirect stdout to file, even $noclobber has been set
>>!  redirect stdout to end of file, even $noclobber has been set
>&!  redirect stdout and stderr to file, even $noclobber has been set
>>&! redirect stdout and stderr to end of file, even $noclobber has been set

C shell裡頭的&&, ||

C shell 裡頭有兩個condition commands, 分別是&&以及||

&&指的是
當第一個指令執行成功就繼續執行第二個指令
且第一個指令執行失敗則第二個指令就不執行
ex.
mkdir work && touch work/file

||指的是
當第一個指令執行成功就不執行第二個指令
而第一個指令執行失敗就繼續執行第二個指令
ex.
mkdir work || echo "Create directory fail"

2006-12-04

awk的使用

目前需要寫幾個小東西, 之前看過awk的用法,想來很適合目前的工作
這邊有個找到的資料
希望派的上用場



AWK主要結構

Pattern { Actions }

Pattern: relational operation
>, <, >=, <=, ==, !=, ~, !~

Actions: I/O command, scenario control command
print, printf(), getline
if(...) {...} else {...}, while(...) {...}

if pattern is true, we do actions!



AWK欄位變數

$0  一字串,目前AWK讀入的資料列
$1  代表$0上第一個欄位的資料
$2  代表$0上第二個欄位的資料
$3  代表$0上第三個欄位的資料
...  ...



AWK內建變數


NF     表$0上讀入的欄位數目
NR     AWK已讀入的資料列數目
FILENAME AWK正在處理的資料檔名

UNIX命令列上, AWK的用法為
# awk '{print $1, $2, $3 * $4}' file.data

而符號 ' 是用來夾住pattern{actions}的, 另外, 若是程式太大需要寫在別的檔案裡頭,則
# awk -f program.awk file.data



AWK的Regular Expression

/... / 常用來包住Regexp
^ 表示該字串出現在字首 (ex. /^the/)
$ 表示該字串出現在字尾 (ex. /the$/)
. 表示為任一字元
* 表示為前字元出現重複次數的字元(ex. /a*/用來比對a不管有無出現或是出現多次的情況)
+ 表示為前字元出現一次以上的字元(ex. /a+/用來比對a至少出現一次以上)
? 表示為前字元不出現或是只出現一次(ex. /a?/用來比對a不出現或只出現一次)
\ 則為跳脫字元 (ex. /filename\.suf/)
[...] 表示為字元集合 (ex. [ab] 用來比對[a]或[b])
[..-..] 表示字元範圍 (ex. [0-5]用來比對[12345])
[^...] 表示字元的補集(ex. [^a]用來比對非[a]以外的字元)
(...) 用來括住一群字元成為一段字串(ex. /(ab)+/用來比對ab, abab, ababab等)
| 表示為判斷的或(ex. /os | apps/用來比對os, apps)