簡體   English   中英

sed分組和替換

[英]Grouping and substitution with sed

我有一個文件,其中有些行是這樣的:

ENV FOO bar
ENV BAZ boz
ENV BIP bop

我只想將這些行轉換為:

export FOO=bar
export BAX=boz
export BIP=bop

我可以隨時使用bash,並且正在嘗試通過sedawk等實現它,但是現在是星期五下午,而且我還沒到那里。

有什么建議么? 我最近的是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM