2017-10-09 115 views

回答

3

的命令是

grep command: your_filename >> save_filename 

這是

#!/bin/bash 
grep command: $1 >> $2 

由其執行

scriptname your_filename save_filename 

感謝大衛

請注意,我使用一個appender >>,而不是創建>。後者確保只有最後一次運行的文件,而appender會在文件已經存在的情況下添加新行。

+0

或者在子shell中運行'grep'和重定向(截斷/寫)一次,如('grep command:your_filename)> save_filename'。無論哪種方式都可以,但是您可能需要''> your_filename'在'grep'調用之前確保'your_filename'是空的,以使用'>>'追加重定向開始。 –

0

如果你正在尋找的這個grep般的行爲一個bash解決方案:

#!/bin/bash 
# Usage: ./mygrep ERE_PATTERN FILENAME 
while IFS= read -r line || [[ $line ]]; do 
    [[ $line =~ $1 ]] && echo "$line" 
done <"$2" 

(我們遍歷在第二個位置參數,$2給出的文件的行,在pretty standard way,使用=~運算符檢查與作爲conditional expression內的第一個參數給出的模式的匹配,打印所有匹配的行。)

調用它像:

./mygrep command: file 

雖然grep慢,這個腳本一個好處是,它支持POSIX ERE(擴展正則表達式)默認(你不需要指定-E就像你在做grep),例如:

./mygrep 'com.*:' file 
./mygrep '^[[:digit:]]{3}' file 
# etc