第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從文件的“鍵=值”字符串中獲取值?

如何從文件的“鍵=值”字符串中獲取值?

一只名叫tom的貓 2021-04-03 14:11:24
給定一個文件,其內(nèi)容具有以下格式:// This is a commentFOO = 1BAR = 0// Comments can be anywhere...BAZ = 10 //...even here!鍵始終固定在行的開頭,但是' ='字符的兩邊可能有任意數(shù)量的空格。該值也可以尾隨任意數(shù)量的空格。編輯:值和/或其尾隨空格也可以跟在注釋后面。如何使用bash腳本和/或awk或作為單線獲取鍵的值sed?我希望能夠執(zhí)行以下操作:MYVAL=$(<string manipulation to get value of "BAZ" from /tmp/foo.txt>)到達>echo $MYVAL10>我在bash腳本編寫方面非常糟糕;從來沒有足夠的流水線使用字符串操作工具套件來知道如何解決這個問題。我能得到的最遠的是> grep BAZ /tmp/foo.txtBAZ = 10而且真的不知道下一步該怎么做。我確實搜索了SO,但是找不到一個前提完全相同的解決方案(特別是' ='的兩邊都存在可變數(shù)量的空格),并且類似問題的解決方案在我的前提下不起作用。
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

一線解決方案sed:


MYVAR=$(sed -nE 's/^BAZ\s*=\s*(\S*)$/\1/p' inputfile)

如一條注釋中所述,sed在以下情況下,此命令將不會產(chǎn)生預(yù)期的結(jié)果:


BAZ = 10 // some comment ending with 0

此處MYVAR將分配0而不是10。要解決此問題,可以將正則表達式更改為:


MYVAR=$(sed -nE 's/^BAZ\s*=\s*([^\s\/]*).*/\1/p' inputfile)

現(xiàn)在MYVAR是10根據(jù)需要。分解正則表達式:


^BAZ\s*=\s*([^\s\/]*).*/\1

^                           Match beginning of line

 BAZ                        Match BAZ

    \s*=\s*                 Match equal sign surrounded by zero or more spaces

           ([^\s\/]*)       Capture in Group 1 any character that is not space or slash

                     .*     Match the rest of the text

                       /\1  Replace matched text with text in Group 1


查看完整回答
反對 回復(fù) 2021-04-16
  • 2 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號