区切り文字があるファイル(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