;で区切られた行の最後の要素を取得します。

;で区切られた行の最後の要素を取得します。

区切り文字があるファイル(test.txt)があります。各行の最後の要素をどのように作成しますか? (各要素ごとに長さが異なります)

答え1

sed 's/.*;//' < test.txt

;最後の行まで、各行のすべての内容を削除します。

または以下を使用してawk

awk -F';' '{print $NF}' < test.txt

フィールド数を事前に知っている場合に使用できますcut。たとえば、4つのフィールドがある場合:

cut -d';' -f4 < test.txt

ただし、行にフィールドが4つ未満の場合は空の行が返されることに注意してください。とは別に;フィールドが1つしかない場合(行にはありません)、その場合は行全体(最初のフィールド)が出力されます。機能の既知のバグですcut

答え2

#!/bin/bash
while read line;
 do
 echo $(echo $line | awk -F ';' '{print $NF}')
done < test.txt

test.txtこれは、各行を入力として使用し、.で区切られた最後の要素を印刷する簡単なスクリプトです;

答え3

またはbashで:

#!/bin/bash

while read line ; do
    echo ${a##*;}
done

関連情報