2017-02-10 29 views
1

我已經宣佈在這樣的文件中的變量後Concat的字符:我想之前在bash一句話

export psw=text 

而且我想和後前Concat的的'單個字符變量的值。我的意思是,我想替換這樣的值:

export psw='text' 

我該如何做到這一點?

我想通過命令來做到這一點。我不想手動做。

+0

是的,這正是我在說的 – Lost

回答

2

簡單和易於使用Perl

perl -i -lpe 's/\=(\w+)$/='"'\\1'"'/' your-file

-i保存在-。安迪

輸出
export psw='text'

它是如何工作
s/.../這部分比賽要你wnat
/.../這部分是爲替代您有部分已匹配。
因此,您在第一步中匹配=(\w+)$
和等號和單詞,它應該是行的末尾。好了之後,你改變這部分
/='"'\\1'"'
那意味着把平等燎和一個單引號什麼,通過比賽組操作員()匹配,然後又單引號。
所以它匹配:=text
然後用='text'

-i替代它是保存結果 -p是打印屏幕+ while循環
-l換上新線
-e一個臨時方案。

只是玩它沒有-i然後你一點一點地瞭解它是如何工作的。


注意
'"'只是爲了逃避在bash單引號。
\\1以及這一個

+0

對不起,你能解釋我的線嗎?我不熟悉perl。 – Lost

+0

當然請稍等一下 –

+1

非常感謝。我會等待:) – Lost

2

sed命令將做你的工作:當它們不存在

sed -i.bak -E "s/(export[ \t]+[[:alnum:]]+=)([^']+)/\1'\2'/" file 

上述表達式只會增加單引號。

+0

你能解釋一下我的線嗎? – Lost

0

,如果你喜歡的回聲的方法,你也可以這樣來做

pwd=text 
export psw=$(echo "\'$pwd\'") 

\需要逃脫單引號因此這將是該字符串的一部分,您分配的回聲的輸出你變量與加引號本身

+0

這裏沒有理由使用'echo'。即使這是OP的意思,'export psw =''$ pwd'「'完全就夠了。 – chepner

+0

thx爲編輯chepner,你比我快我意識到我忘了代碼塊 – Mike

相關問題