Bash 删除第一行文本
为什么此脚本与文件的旧版本一起工作 如果csv的第一行包含文本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
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:这很危险,而且根本不需要更改文件。最后,还有更好的过滤文件的方法。