我有一个要求,我必须在某些字符串模式之间插入反引号,我已经尝试了几种sed awk组合来使其工作,但无法成功。
模式:具有以下内容的多个文件
switch content;
show content;
我想读取每个文件并按如下所示转换内容:
switch `content`;
show content;
最简单/最快捷的方法是什么,谢谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
给出脚本
#!/usr/bin/env bash
convert_re='[[:space:]]*switch[[:space:]](.*)[;]$[[:space:]]*'
while read -r line; do
if [[ $line =~ $convert_re ]]; then
printf 'switch `%s`;\n' "${BASH_REMATCH[1]}"
else
printf '%s\n' "$line"
fi
done
...调用为:
./convert <<'EOF'
switch contentA;
show contentA;
switch contentB;
show contentB;
EOF
...产量:
switch `contentA`;
show contentA;
switch `contentB`;
show contentB;
...如您在https://ideone.com/Qq96f5上看到的