0

为什么此脚本适用于旧版本的文件?

如果该行包含文本,我想删除 csv 的第一行如果我在一切正常KP_TITEL 后使用退出测试脚本。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"
4

3 回答 3

2

如果您只想处理除第一行之外的所有内容(例如通过管道),您可以通过以下方式实现tail

tail -n +2 $file
于 2012-08-21T11:50:19.310 回答
1

我不确定该选项的-i作用,sed但通常sed是一个流编辑器,它处理输入并将结果写入标准输出。在您的情况下,输出会丢失,然后在 while 中再次读取旧文件。试试这个:

sed '/KP_TITEL/d' "$1" | \
while ...
done

管道符号将更改stdinwhile 循环(以及read命令)。

我继续这一行,\因为我发现这比以下更具可读性:

sed '/KP_TITEL/d' "$1" | while ...

要删除第一行,您应该使用

sed 1d "$1"

或(更便宜)

tail --lines=+2 "$1"
于 2012-08-21T11:49:50.230 回答
0

你可以使用计数器

g=0;

while ...

((g++))
        if [ "$g" != "1" ]; then
                do something
        fi
done
于 2012-08-21T13:31:58.903 回答