私のファイルには次の内容があります
foobar bar
bar foo foo
bar bar foobar
すべての行の最後の文字(最後の3文字)を取得したいと思います。
目的の出力を取得するには、次のforループ回避策を使用していますが、cut
コマンドはこれより良い結果を得ることができるようです。 Cutで同じことをする方法はありますか?
$ cat test.sh
FILE=$1
echo "Last chars:"
for i in $(cat $FILE)
do
echo ${i: -1}
# OR echo $i |tail -c 2
done
echo
echo "Last 3 chars:"
for i in $(cat $FILE)
do
echo ${i: -3}
# OR echo $i |tail -c 4
done
$ sh test.sh
Last chars:
r
r
r
o
o
r
r
r
Last 3 chars:
bar
bar
bar
foo
foo
bar
bar
bar
ベストアンサー1
cut
1行自体には「最後のN文字」という概念はありません。ただし、rev
これをプログラムと組み合わせると、各行を反転できます。最初N文字を入力し、結果を反転して元の順序に復元します。
rev | cut -c 1-3 | rev