Bash 在sed双引号中使用迭代变量
我试图完成的任务是从一个以逗号开头的文本文件中向一列2位数字添加一定数量的零,例如;“,24” 使用sed,我只想在由while循环中的计数器确定的某些行上执行此操作。我的意思是,当计数器达到j=2时,它将使用此变量作为sed的一部分,在第2行重写“、24”as“、00024” 到目前为止:Bash 在sed双引号中使用迭代变量,bash,sed,Bash,Sed,我试图完成的任务是从一个以逗号开头的文本文件中向一列2位数字添加一定数量的零,例如;“,24” 使用sed,我只想在由while循环中的计数器确定的某些行上执行此操作。我的意思是,当计数器达到j=2时,它将使用此变量作为sed的一部分,在第2行重写“、24”as“、00024” 到目前为止: count=j cat A.txt | while read line do j=$((j+1)) echo "$j" sed -i "$js/,/,000/" A.txt done
count=j
cat A.txt | while read line
do
j=$((j+1))
echo "$j"
sed -i "$js/,/,000/" A.txt
done
我的问题是sed不会识别产生此错误的替换语句
sed:-e表达式#1,字符9:未知命令:`/'
我知道我在这里展示的sed可以不用迭代,但是项目的下一部分需要迭代器
我觉得错误可能在于使用\ escape,但到目前为止,我所做的一切都不起作用
任何帮助都将不胜感激您确定要将sed与shell循环结合起来,而不是直接在sed中使用地址范围吗?
sed-i“${j}s/,/,000/”a.txt
-bash正在寻找一个名为js
的变量。大括号告诉它变量的名称就是j
。shell查找名为$js
的变量。您必须使用sed-i“${j}s/…
完美是的,这就是我一直在寻找的!你知道这是非常低效的。它扫描文件的每一行。所花费的时间是文件中行数的二次方。你确定要将sed与shell循环结合起来,而不是直接在sed中使用地址范围吗?sed-I“${j}s/,/,000/“A.txt
-bash正在寻找一个名为js
的变量。大括号告诉它变量的名称就是j
。shell查找名为$js
的变量。您必须使用sed-i“${j}s/…
Perfect是的,这就是我一直在寻找的!您知道这是非常低效的。它扫描文件的每一行。所需的时间是文件中行数的二次方。