gpt4 book ai didi

linux - 使用 sed 和 IFS 替换 while 循环中的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:50 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com