这是我在Stackoverflow上的第一篇文章。我在脚本中执行sed命令时遇到了一个问题,而同一个命令可以单独正常工作。
脚本:
#!/bin/bash
filename=file
sensitive="censored"
while IFS= read -r line; do
if [[ $line == *"Memory Region Size"* ]];
then
server_name=$(echo "$line" | awk '{print $11}')
echo "$line" >> test
elif [[ $(echo "$line" | wc -w) == 4 ]];
then
echo "$line" | awk '$4="censored"' >> test
else
echo "$line" >> test
fi
done < $filename
sed -i "s/${server_name}/${sensitive}/g" test
echo $server_name
echo $sensitive
我想用"censored"替换server_name来审查文件。这是我正在使用的输出:
$ ./log_censor.sh
sed: -e expression #1, char 36: unterminated `s' command
ABC-123
censored
同样的命令,它的一行命令对我来说工作得很好:
$ cat file1
My server is ABC-123
$ server_name="ABC-123";sensitive="censored";sed -i "s/${server_name}/${sensitive}/g" file1
$ cat file1
My server is censored
我很感激你的帮助。谢谢
1条答案
按热度按时间dgenwo3n1#
混合bash、awk和sed似乎没有必要,用一种语言就可以了,比如awk。