2015-10-15 150 views
2

我有一個文件,其內容類似如下。sed命令/ shell腳本讀取特定行並在需要時進行更新

name: MyName 
age: 25 
subject: Math 

這個文件需要被更新爲:

name: MyName 
age: "25" 
subject: Math 

但條件是,sed命令/ shell腳本可以運行多次。但是,雙引號只能添加一次。

我爲它寫了一個腳本,它的工作原理。想找到一個更簡單的解決方案。

#!/bin/bash 
FILE="myfile" 
while IFS='' read -r line || [[ -n "$line" ]]; do 
    if [[ $line =~ 'age:' ]] 
    then 
     if ! [[ $line =~ 'age: "' ]] 
     then 
      sed 's/\(age:[[:blank:]]*\)\(.*\)/\1"\2"/' -i $FILE 
     fi 
    fi 
done < $FILE 

回答

2

您可以運行從這個稍微改變正則表達式的命令行sed的,它會爲你的腳本相同的效果

sed -i 's/\(age:[[:blank:]]\+\)\([^"].*\)/\1"\2"/' file 

它不會賽後如果第一個字符空格是一個雙引號,這是你的腳本檢查的內容。

經過測試,它適用於我。

+0

是的,工作就像一個魅力。謝謝 – Chetan