内部 file.txt
chicken sheep cow
tomato cucumber
banana
if
声明なし
while read -r column1 column2 column3; do
command
done < file.txt
if
ステートメントを使用して、行に3つの列がある場合はどのように実行しcommand1
、2つの列がある場合は実行しcommand2
、1つの列しかない場合は実行しcommand3
ますか?
または、例の違いが最も少ない他のアプローチ:
#!/bin/bash
while read -r column1 column2 column3; do
if [ -z "$column2" ] ; then
printf '%s\n' "Only first column has data"
elif [ -z "$column3" ]; then
printf '%s\n' "Only first and second columns has data"
elif [ -n "$column3" ]; then
printf '%s\n' "All three columns has data"
fi
done < file.txt
出力は次のようになります。
All three columns has data
Only first and second columns has data
Only first column has data
注:
この例では、1行目と2行目にいくつかのスペースが含まれていますが、デフォルトでread
は、先頭と末尾のスペース文字がすべて削除されています。
入力に3つ以上の列が含まれている場合、3番目以降のすべてのデータは column3
ファイル(データストリーム、変数)を行ごと(および/またはフィールドごと)に読み取るにはどうすればよいですか?を参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加