[英]Grouping and substitution with sed
我有一個文件,其中有些行是這樣的:
ENV FOO bar
ENV BAZ boz
ENV BIP bop
我只想將這些行轉換為:
export FOO=bar
export BAX=boz
export BIP=bop
我可以隨時使用bash,並且正在嘗試通過sed
, awk
等實現它,但是現在是星期五下午,而且我還沒到那里。
有什么建議么? 我最近的是:
sed -i 's/^ENV\s\([A-Z]\)\s*\([A-Z]\)/export \1 = \2/g' -i file
謝謝。
使用awk:
awk '$1=="ENV"{printf "export %s=%s%s", $2, $3, ORS}' file
export FOO=bar
export BAZ=boz
export BIP=bop
說明:
$1=="ENV" # Do it only when first field is ENV
printf "export %s=%s%s", $2, $3, ORS # print formatted output by inserting =
# between field 2 and field 3
使用sed:
sed '/^ENV /s/^ENV/export/;s/ \+\([^ ]\+$\)/=\1/' file
export FOO=bar
export BAZ=boz
export BIP=bop
兩個范圍都需要一個中繼器( *
),后者則需要一個小寫字母。 就像提到的@EmilKakkau一樣,您需要-r
選項,不需要括號中的轉義符。
sed -r 's/^ENV\s([A-Z]*)\s*([a-z]*)/export \1 = \2/g' -i file
sed 's/ENV/export/;s/\s+/=/2' -i file
2個替換,請考慮任何值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.