我有一个文件,其内容类似如下。
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
答案 0 :(得分:2)
你可以使用这个稍微修改过的正则表达式从命令行运行sed,它将与你的脚本具有相同的效果
sed -i 's/\(age:[[:blank:]]\+\)\([^"].*\)/\1"\2"/' file
如果空格后面的第一个字符是双引号,则不会匹配,这是您的脚本检查的内容。
测试它,它适用于我。