特定の文字列から列を切り取るには、スクリプトで切り取りを使用します。

特定の文字列から列を切り取るには、スクリプトで切り取りを使用します。

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"

おすすめ記事