歡迎您光臨本站 註冊首頁

sed當中使用變數替換以及執行外部命令

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

sed當中使用變數替換以及執行外部命令


sed當中使用變數替換以及執行外部命令


在使用sed對日誌或者其它文本進行parse的過程當中,有時候我們需要引用外部變數的值,

或者獲取一個shell命令執行的結果,以便達到更加可觀的輸出結果。這裡介紹如何做到。

sed中使用變數替換

1.sed命令使用雙引號的情況下,使用$var直接引用

$ echo|sed "s/^/$RANDOM.rmvb_/g"
29328.rmvb_


# 上面例子引用了一個環境變數$RANDOM的值

2.sed命令使用單引號的情況下,使用'"$var"'引用

類似,我們可以看到

$ echo|sed 's/^/'"$RANDOM"'.rmvb_/g'
31338.rmvb_

sed中執行外部命令

1.sed命令使用單引號的情況下使用'`shell command`'或者'$(shell command)'引用命令執行的結果

還是以上面案例分析,例子如下

$ echo|sed 's/^/'`echo $RANDOM`'.rmvb_/g'
8063.rmvb_


# 上面的例子使用了舊式的命令替換,也可以採用新式的命令替換方法,如下

$ echo|sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
18554.rmvb_


# 下面例子取用當前日期作為結果的一部分,如下

$ echo|sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
20120108.rmvb_


2.sed命令使用雙引號的情況下直接`shell command`或者$(shell command)引用命令執行的結果


類似的,雙引號的情況,如下

$ echo|sed "s/^/$(date +"%Y%m%d").rmvb_/g"
20120108.rmvb_


# 使用環境變數$RANDOM以及舊式命令替換的例子

$ echo|sed "s/^/`echo $RANDOM`.rmvb_/g"
4988.rmvb_

總結

在sed語句裡面,變數替換或者執行shell命令,雙引號比單引號少繞一些彎子

《解決方案》

再轉一個awk的過來吧:mrgreen:

[火星人 ] sed當中使用變數替換以及執行外部命令已經有9101次圍觀

http://coctec.com/docs/service/show-post-1179.html