我已经发布了使用 bash 添加转义字符。我需要为以 {@codeBlock 开头的文件中的每一行编写此脚本
所以
{@codeBlock: TEstBigquerry.buildPicks}
应该看起来像
\{@codeBlock:\ TEstBigquerry.buildPicks\}
我的脚本
#!/bin/bash
file=clfields.mdx
while read -r line; do
if [[ "${line::11}" == '{@codeBlock' ]]; then
printf '%q\n' "$line"
else
echo "$line"
fi
done < clfields.mdx
终端输出正常,但文件保持不变。为什么?
您可以执行与链接帖子中相同的操作(使用 打印
printf '%q\n'
),但测试每一行:解释:
IFS= read -r line
将整行读入变量line
。${line::11}
取的前11个字符line
。< input_file.txt
将输入文件的内容发送到while
语句;您也可以执行cat input_file.txt | while read
...来做同样的事情。使用任何 awk:
如果您有 GNU awk,您可以使用它
awk -i inplace 'script' file
来修改输入文件,或者使用任何 awk(或任何其他命令)awk 'script' file > tmp && mv tmp file
。和
sed
:或者