ファイル内のすべての行の最後のN文字を印刷するには、cutを使用します。

ファイル内のすべての行の最後のN文字を印刷するには、cutを使用します。

私のファイルには次の内容があります

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

cut1行自体には「最後のN文字」という概念はありません。ただし、revこれをプログラムと組み合わせると、各行を反転できます。最初N文字を入力し、結果を反転して元の順序に復元します。

 rev | cut -c 1-3 | rev

おすすめ記事