このコードがあります。
while IFS= read
do
read -r
read -r
read -r
echo $REPLY
done <<< "$LINES"
行のデータは次のとおりです。
----
Test
----
1,2,3
1,2,4
etc
最初の3行をスキップして4行から処理を開始したいと思います。 read -rを試しましたがうまくいかないようです。私は出力が欲しい:
1,2,3
1,2,4
etc
答え1
これはbashに特化した構文です。
i=3 n=0
while read -r line; do
((n >= i )) && echo "$line"
((n++))
done < file
答え2
変数の内容が前述のものと似ていることを考慮すると、4行目からデータを読み取ることも$LINE
解決策の1つです。あなたはこれを行うことができます、
tail +4 <<< "$LINE"
$LINE
これにより、4行目から最後の行まですべての行が印刷されます。
結果を内部で使用したい場合は、while
これがうまく機能します。
while IFS= read -r; do echo $REPLY; done <<< "$(tail +4 <<< "$LINE")"
。
答え3
電線で何をしたいのかによって異なりますが、電線で包むことができればもう一度電話するbashバージョン4以降の場合mapfile
(または同義語readarray
)および-s
(スキップ)オプションを使用できます。
前任者。与えられた
$ echo "$LINES"
----
Test
----
1,2,3
1,2,4
etc
その後、定義した後
myfunc() { printf "%s\n" "$2"; }
あなたはできます
$ mapfile -t -s3 -c1 -C 'myfunc' <<< "$LINES"
1,2,3
1,2,4
etc