0

このスクリプトが古いバージョンのファイルで動作するのはなぜですか?

行にテキストが含まれている場合、csv の最初の行を削除したい場合は、すべてが正常に機能KP_TITEL した後に終了してスクリプトをテストしますsedwhile 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

このオプションが何をするのかはわかりません-ised、通常sedは、入力を処理して結果をstdoutに書き込むストリームエディターです。あなたの場合、出力は失われ、その後、古いファイルがしばらくの間再び読み取られます。代わりにこれを試してください:

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

パイプ記号はstdin、whileループ(したがって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 に答える