我正在使用 while 循环将行拆分为变量,并使用循环内的相同变量传递给 sed 以替换行中的内容。有没有一种方法可以打印整行,而不必将所有 while 变量打印到新文件中?
while IFS=';' read -r task_id date name action; do
sed -e "s/\$date/$date/; s/\$name/$name/" >> $TASKSFILE.tmp
done < $FILE
输入文件看起来像:
1;20190423;Name1;print $date $name
2;20190424;Name2;print $date $name
预期输出:
1;20190423;Name1;print 20190423 Name1
2;20190424;Name2;print 20190424 Name2
最佳答案
为什么不为此使用 awk?它适用于所有 POSIX 兼容平台。
awk -F';' '{sub(/\$date/,$2);sub(/\$name/,$3)} 1' "$FILE" > "${TASKSFILE}.tmp"
$ awk -F';' '{sub(/\$date/,$2);sub(/\$name/,$3)} 1' file
1;20190423;Name1;print 20190423 Name1
2;20190424;Name2;print 20190424 Name2
关于linux - 使用 sed 和 IFS 替换 while 循环中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816595/