我想我有一個sed或awk問題。我試圖從bash腳本中操作一個配置文件,但是我找不到正確的方法來完成它。AWK或Sed,還是一起?
我在配置文件中的以下內容:
bla.update(
{'test': {'tag': 'twenty',
並希望將其更換到:
bla.update({
'test': {'tag': 'twenty',
我嘗試過各種sed的& awk的教程,但我找不到它。
我猜不應該太難,但我卡住了,請幫助我!
我想我有一個sed或awk問題。我試圖從bash腳本中操作一個配置文件,但是我找不到正確的方法來完成它。AWK或Sed,還是一起?
我在配置文件中的以下內容:
bla.update(
{'test': {'tag': 'twenty',
並希望將其更換到:
bla.update({
'test': {'tag': 'twenty',
我嘗試過各種sed的& awk的教程,但我找不到它。
我猜不應該太難,但我卡住了,請幫助我!
一些這樣的:
awk 'f {sub(/{/,x);f=0} /bla.update/ {$0=$0 "{";f=1}1'
bla.update({
'test': {'tag': 'twenty',
它搜索bla.update
然後添加{
末,並設置標誌f=1
如果標誌f
設置,那麼從線和清晰的標誌開始刪除{
。
酷!那樣做了。謝謝! – Ron
下面是使用的嘗試sed
sed 'N;s/(\s*\n\s*{/({\n/g' file
樣品輸入:
bla.update(
{'test': {'tag': 'twenty',
輸出:
bla.update({
'test': {'tag': 'twenty',
隨着GNU AWK這樣你就可以一次讀取使用-v RS='\0'
整個文件(也將與其他一些awks工作):
$ awk -v RS='\0' -v ORS= '{gsub(/\n{/,"{\n")}1' file
bla.update({
'test': {'tag': 'twenty',
與其他awks你可以使用一些其他的字符是不存在的輸入文件,例如一個控制-C或類似的,而不是\0
如記錄分隔符上方或可以這樣做:
$ awk -v RS= -v ORS='\n\n' '{gsub(/\n{/,"{\n")}1' file
bla.update({
'test': {'tag': 'twenty',
但它將壓縮的連續的空行序列到一個空行,並在末尾添加尾空白行如果其中一個還沒有出現的話。
最後,您可以構建從整個文件內容的字符串讀取使用任何AWK一次在一個行,然後在最後一節對字符串進行操作:
$ awk '{s=s $0 ORS} END{gsub(/\n{/,"{\n",s); printf "%s",s}' file
bla.update({
'test': {'tag': 'twenty',
只是移動的一般模式打開括號到前一行? – SheetJS
是的,那是唯一的確.. – Ron