Io-Redirection
如何忽略重定向的特定行
我有一個程序,我可以通過重定向從輸入文件中提供一些指令來執行它。我的輸入文件如下所示:
alpha 5 2 run 7 quit
現在,我像這樣執行它:
myprogram < input_file
但是,有時我需要在輸入文件中添加一些註釋以使其清楚,例如
# The name of value alpha # The acceleration 5 # The distance 2 run 7 quit
不幸的是,現在我無法將它重定向到程序,因為它不會忽略以開頭的行
#
在將其重定向到之前如何忽略這些註釋行
myprgram
?
在將註釋提供給您的程序之前,使用 sed 過濾掉帶有註釋的行。您可以選擇其中一種形式(但並非所有 shell 都支持第二種形式,即程序替換):
sed '/^#/d' input_file | myprogram myprogram < <(sed '/^#/d' input_file)
/^#/
是匹配任何以 開頭的行的正則表達式#
,d
是從輸出中刪除這些行的命令。(不用擔心,input_file
不會被 修改sed
)。
您可以使用
grep
過濾掉以“#”開頭的行:grep -v '^#' input_file | myprogram
傳遞給的字元串
grep
是一個正則表達式。它匹配行的開頭 (^
),後跟#
.-v
反轉邏輯,因此它顯示與此模式不匹配的行。一般來說,如果我想修改行內的數據,我會選擇
grep
簡單地顯示/丟棄整行。sed
但當然,該sed
解決方案也有效。