AWK(GNU Awk 3.1.7)でprintfを利用する際、以下のコードでは、doneの上の行で変数userが8文字を超える場合フォーマットが崩れてしまいました。
bash
1#!/bin/bash 2cat somefile.txt | while read i 3do 4 id=$(echo $i | awk '{print $1}') 5 user="foo"$id 6 echo $i | awk -v name="$user" '{printf("%-8s%-8s\n",name,$2)}' 7done
somefile.txtを以下のようにした場合、出力が下のようになります。
12 state1 123 state2 12345 state3 12345678 state4
foo12 state1 foo123 state2 foo12345state3 foo12345678state4
これを$userの中身が8文字を超過した場合9文字目以降を表示しないようにしたいです。完全な素人の質問で恐縮ですが、方策をお教えいただけると幸いです。
*cat somefile.txtと、user="foo"$idは、本来は関数の出力結果ですが簡略化しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/28 06:12
2016/12/28 06:37
2017/01/05 04:37