Unix シェルスクリプトの Cut でタブ区切り記号を使用する

Unix シェルスクリプトの Cut でタブ区切り記号を使用する

私のファイルには、input.txt次のタブで区切られた形式のデータが含まれています。

23776112        Inactive        Active
23415312        Inactive        Active

要件に応じて、whileループ内で最初の列のデータを切り取り、次のように印刷したいと思います。

以下はコードの一部です -

......
......
    while read line
    do  
        SN=`echo ${line}|cut -d '       ' -f1`
        echo $SN
    done < input.txt
....
....

上記のタブ文字を区切り文字として使用するには、次のようにします。Ctrl V Tab

ただし、出力は予想とは異なります。私はO/Pを得た-

23776112 Inactive Active
23415312 Inactive Active

そして私はO / Pが次のようになります -

23776112 
23415312

ベストアンサー1

cut -f 1 input.txt

これにより、タブ区切りファイルの最初の列が表示されますinput.txt。デフォルトのフィールド区切り文字cutはタブなので、追加の指定は不要です。

区切り文字が次の場合実際にスペース、用途

cut -d ' ' -f 1 input.txt

あることが判明したら多くの種類タブおよび/または空白の場合は、以下を使用してくださいawk

awk '{ print $1 }' input.txt

cutこの操作に使用するか、使用しているかにかかわらず、シェルループは必要ありませんawk

皆さんも見てください」シェルループを使用してテキストを処理するのはなぜ悪い習慣と見なされますか?」。


スクリプトが機能しない理由は、echo引用符で囲まれていない変数を使用するとタブが消えるためです。

関連:

おすすめ記事