【发布时间】:2017-09-20 08:21:57
【问题描述】:
我在这里阅读了一些关于它的问答,但对我没有任何帮助。我知道特殊字符在使用sed 时会出现问题,但是如何在不知道它们是否存在于模式中的情况下处理它?
在我的具体情况下,我有一个文件 (file.txt),如下所示:
my line 1.
my line two.
...
this is [ -f another line ]
我正在尝试在随机行的末尾插入一个文本 (my{Text})。
MAX=$(wc -l < file.txt)
Q1=$(expr $MAX / 4)
Q3=$(( 3 * $MAX / 4 ))
LINENUMBER=$(shuf -i $Q1-$Q3 -n1)
LINE="$(head -n $LINENUMBER file.txt | tail -1)"
sed -i -e "${LINENUMBER}s~$LINE~$LINE my{Text}~g" file.txt
当$LINE 不是包含this is [ -f another line ] 的行时,此代码运行良好。在这种情况下,$LINE my{Text} 不会替换 $LINE。
那么如何处理可能需要使用sed 转义的随机模式?
我正在使用 GNU bash 4.3.11(1) 和 sed (GNU sed) 4.2.2。
【问题讨论】: