やりたいこと
以下のような日本語文字列があった場合に
# echo "あい。かき。さし。たち" あい。かき。さし。たち
最後の列を切り捨てて
あい。かき。さし。
のみを取り出したい。
環境情報
- Debian GNU/Linux 9 (stretch)
やり方
以下のワンライナーにて
# echo "あい。かき。さし。たち" | awk 'BEGIN{FS="。";OFS="。"}{c="";for(i=1;i<NF;i++) c=c $i"。"; print c}'
要件を満たした切り出しが行える。
あい。かき。さし。
以下、補足です。
補足
Twitterのような文字列制限があるプラットフォームに日本語文字列を切り出す際に利用ができます。
実現方法は多々あると思いますが、今回は全角文字をawkで区切った上でfor文にて条件分岐にかけました。
前者はcutコマンドではできないためawkを利用して実現をし、後半は最終列数であるNFとの条件分岐によって実現しています。
{c="";for(i=1;i<NF;i++) c=c $i"。"; print c}'
このワンライナーは初期条件を変えることで先頭の文字列のみを除外する・・といったように柔軟な制御が可能となるので
# echo "あい。かき。さし。たち" | awk 'BEGIN{FS="。";OFS="。"}{c="";for(i=2;i<=NF;i++) c=c $i"。"; print c}' かき。さし。たち。
要件に応じて活用ください。