viagens.txtというファイルがあります。
2018-10-01:88020:88013:6:4.2
2018-10-01:88020:88014:8:3.8
各行の2番目の列を確認するスクリプトを作成したいです(この場合、両方の場合は「88020」を返します)。
ただし、2番目の列の数を取得するためにフィルタリングすることはできません。私はこのコードを持っています:
#!/bin/bash
fich=viagens.txt
condutores=condutores.txt
if [ -f $fich ];then
for f in $(cat $fich); do
condutor=$(cut -f2 $f)
echo $condutor
done
else
echo "Ficheiro nao existe"
fi
私も試しました
#!/bin/bash
fich=viagens.txt
condutores=condutores.txt
if [ -f $fich ];then
for f in $(cat $fich); do
condutor=$(cat $f | cut -d' ' -f2)
echo $condutor
done
else
echo "Ficheiro nao existe"
fi
私は何が間違っていましたか?
よろしくお願いします。
ベストアンサー1
どちらのスクリプトもファイルからcut
名前を読み取ったファイルを使用します。両方のスクリプトでエラーが発生するviagens.txt
必要がありますNo such file or directory
(質問に常にエラーが含まれていることを忘れないでください)。
代わりに:
#!/bin/bash
fich=viagens.txt
if [ ! -f "$fich" ]; then
echo "Ficheiro nao existe" >&2
exit 1
fi
cut -d : -f 2 <"$fich" |
while read data; do
printf 'Data read: %s\n' "$data"
done
2番目に区切られたフィールドは入力からcut -d : -f 2
返されます。:
cut
またはその列のみを出力したい場合:
#!/bin/bash
fich=viagens.txt
if [ ! -f "$fich" ]; then
echo "Ficheiro nao existe" >&2
exit 1
fi
cut -d : -f 2 <"$fich"