为什么此脚本适用于旧版本的文件?
如果该行包含文字KP_TITEL
,我想删除csv的第一行
如果我在sed
之后使用退出测试脚本一切正常。但是只要我想用while loop
测试它,文件仍然包含第一行。
任何想法?
sed -i '/KP_TITEL/d' "$1"
# read data
input=$1
while IFS=';' read -r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13
do
other things
done < "$input"
答案 0 :(得分:2)
如果您只想处理除第一行以外的所有行(例如通过管道),您可以使用tail
实现此目的:
tail -n +2 $file
答案 1 :(得分:1)
我不确定-i
选项对sed
的作用,但通常sed
是一个流编辑器,它处理输入并将结果写入stdout。在您的情况下,输出丢失,然后,再次读取旧文件。试试这个:
sed '/KP_TITEL/d' "$1" | \
while ...
done
管道符号将更改while循环的stdin
(以及read
命令)。
我继续使用\
,因为我发现它比以下更具可读性
sed '/KP_TITEL/d' "$1" | while ...
要删除第一行,您应该使用
sed 1d "$1"
或(更便宜)
tail --lines=+2 "$1"
答案 2 :(得分:0)
你可以使用计数器
g=0;
while ...
((g++))
if [ "$g" != "1" ]; then
do something
fi
done