我有文件test.txt和文件包含一些行 因此,一旦验证完成,我必须在单词的末尾添加“完成”, 初始文本文件
ABC
BCD
CDE
预期产出
abc DONE
bcd DONE
cde DONE
以下是我正在使用的代码
k=0
for i in `cat test.txt`
do
if [[ $k -le 5 ]];
then
echo $i >> XYZ
k=`expr $k + 1`
sed '/$i/a "DONE"' test.txt
fi;
done
但我在test.txt中看不到任何变化。知道怎么做
答案 0 :(得分:1)
你有两个主要缺陷; bash变量在字面上保留在单引号内,并且您没有使用 sed 的就地替换-i
标记。
#!/bin/bash
k=0
for i in `cat test.txt`
do
if [[ $k -le 5 ]];
then
echo "$i" >> XYZ
k=`expr $k + 1`
sed -i 's/'"$i"'/'"$i"' DONE/' test.txt
fi;
done
在阅读文件的同时编辑文件时要小心。