删除第一行文字

时间:2012-08-21 11:40:44

标签: bash

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

如果该行包含文字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"

3 个答案:

答案 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