gpt4 book ai didi

bash - 使用sed批量删除多个文件中的多行

转载 作者:行者123 更新时间:2023-12-04 06:02:51 26 4
gpt4 key购买 nike

假设我想删除一堆文件中的相同行。我有一个简单的 bash 脚本,如下所示:

st=$1
en=$2
shift 2
for i in $*; do
echo "sed -i -e '${st},${en}d' $i"
sed -i -e '${st},${en}d' $i
done

我这样称呼它:
[03:18] ./cleanup.sh 2731 3009 trace_X+0.01080_Y+0.00309_Z-0.00000.dat

我得到
sed -i -e '2731,3009d' trace_X+0.01080_Y+0.00309_Z-0.00000.dat
sed: -e expression #1, char 12: unterminated `s' command

我究竟做错了什么?我尝试在调用语句中的变量或文件名周围添加更多引号,但没有运气...

谢谢您的帮助 !

最佳答案

您应该在实际 sed 中使用双引号命令:

sed -i -e "${st},${en}d" $i

单引号内没有变量扩展。

它确实在 echo 中扩展的事实是因为您正在回显的字符串被双引号包围。

事实上,如果这些只是您正在处理的数字,您甚至可以完全删除引号( sed -i -e ${st},${en}d )。

关于bash - 使用sed批量删除多个文件中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734621/

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