我有
字符串.. 23 { ..
我希望结果看起来像
.. { "No":"23" ..
我需要在Bash脚本中执行此操作。请帮忙。提前谢谢。
需要一个解决方案,用 {“No”:“DD”替换所有出现的 DD {。 'D'是数字
答案 0 :(得分:0)
使用sed
:
sed 's/\(23\)\s*{/{"No":"\1"/g' file
<强>更新强>
sed 's/\([0-9]\+\)\s*{/{"No":"\1"/g' file
答案 1 :(得分:0)
用bash。
http://www.linuxjournal.com/content/bash-regular-expressions
此网站上有一个脚本,向您展示如何处理匹配的正则表达式。
我只是把它复制到这个答案。
#!/bin.bash
if [[ $# -lt 2 ]]; then
echo "Usage: $0 PATTERN STRINGS..."
exit 1
fi
regex=$1
shift
echo "regex: $regex"
echo
while [[ $1 ]]
do
if [[ $1 =~ $regex ]]; then
echo "$1 matches"
i=1
n=${#BASH_REMATCH[*]}
while [[ $i -lt $n ]]
do
echo " capture[$i]: ${BASH_REMATCH[$i]}"
let i++
done
else
echo "$1 does not match"
fi
shift
done
答案 2 :(得分:0)
匹配两位数后跟任意数量的空格{
$ s=".. 35 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"35" ..
$ s=".. 23 { .."
$ [[ $s =~ ([0-9][0-9])\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"23" ..
匹配一个或多个数字,后跟任意数量的空格和{
$ s=".. 25233 { .."
$ [[ $s =~ ([0-9]+)\ *\{ ]]
$ ms="${s/${BASH_REMATCH[0]}/{ \"No\":\"${BASH_REMATCH[1]}\"}"
$ echo "$ms"
.. { "No":"25233" ..