Bash 删除第一行文本

Bash 删除第一行文本,bash,Bash,为什么此脚本与文件的旧版本一起工作 如果csv的第一行包含文本KP\u TITEL 如果我在sed之后退出测试脚本,那么一切正常。但是只要我想用while循环测试它,文件仍然包含第一行 有什么想法吗 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 < "$inpu

为什么此脚本与文件的旧版本一起工作

如果csv的第一行包含文本
KP\u TITEL
如果我在
sed
之后退出测试脚本,那么一切正常。但是只要我想用
while循环测试它,文件仍然包含第一行

有什么想法吗

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"
sed-i'/KP_TITEL/d'$1“
#读取数据
输入=$1
而IFS=';'读取-r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13
做
其他事情
完成<“$input”

我不确定
-I
选项对
sed
有什么作用,但通常,
sed
是一个流编辑器,它处理输入并将结果写入stdout。在您的情况下,输出丢失,然后在while之前再次读取旧文件。请尝试以下方法:

sed '/KP_TITEL/d' "$1" | \
while ...
done
管道符号将更改while循环的
stdin
(从而更改
read
命令)

我用
\
继续这一行,因为我发现这比:

sed '/KP_TITEL/d' "$1" | while ...
要删除第一行,您应该使用

sed 1d "$1"
或(更便宜)


我不确定选项
-I
sed
有什么作用,但通常,
sed
是一个流编辑器,它处理输入并将结果写入stdout。在您的情况下,输出丢失,然后在while之前再次读取旧文件。请尝试以下方法:

sed '/KP_TITEL/d' "$1" | \
while ...
done
管道符号将更改while循环的
stdin
(从而更改
read
命令)

我用
\
继续这一行,因为我发现这比:

sed '/KP_TITEL/d' "$1" | while ...
要删除第一行,您应该使用

sed 1d "$1"
或(更便宜)


如果您只想处理除第一行以外的所有内容(比如通过管道),您可以使用
tail

tail -n +2 $file

如果您只想处理除第一行以外的所有内容(比如通过管道),您可以使用
tail

tail -n +2 $file

你可以用柜台

g=0;

while ...

((g++))
        if [ "$g" != "1" ]; then
                do something
        fi
done

你可以用柜台

g=0;

while ...

((g++))
        if [ "$g" != "1" ]; then
                do something
        fi
done

提特尔不是头衔!复制粘贴错误?只是我描述中的一个错误,但是程序在没有while部分的情况下工作。。。。它删除第一行。但是while循环不适用于正确的文件…TITEL不是TITLE!复制粘贴错误?只是我描述中的一个错误,但是程序在没有while部分的情况下工作。。。。它删除第一行。但是while循环不适用于正确的文件…
-i
应该在适当的位置更改文件。它取决于
sed
实现。有时需要
-i'
,而不是裸
-i
@choroba:这很危险,而且根本不需要更改文件。最后,还有更好的过滤文件的方法。
-i
应该在适当的位置更改文件。这取决于
sed
实现。有时需要
-i'
,而不是裸
-i
@choroba:这很危险,而且根本不需要更改文件。最后,还有更好的过滤文件的方法。