列に出力を表示 [閉じる]

列に出力を表示 [閉じる]

コードは次のとおりですcase

echo "Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time"
read ch
case $ch in
1)
echo `who | cut -c1-8 | cut -d" " -f1`
;;
2)
echo `who | cut -c9-16 | column`
;;
3)
echo `who | cut -c22-32 | sort`
;;
4)
echo `who | cut -c34-39`
;;
esac

このスクリプトを実行すると、出力が1行にあり、列形式(つまり、単一の列に複数の行にわたってリストされている)として表示されるようになります。cutcolumnとコマンドを試しましたが、sortまだ休憩がありません。出力は次のとおりです

Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
1
bioinfo class class class class class class class class class class
[class@bio ~]$

ベストアンサー1

awk代わりに次のように使用しますcut

#!/bin/bash

echo "Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time"
read ch
case $ch in
    1)  
    who | awk '{ print $1 }'
    ;;  
    2)  
    who | awk '{ print $2 }'
    ;;  
    3)  
    who | awk '{ print $3 " " $4 }'
    ;;  
    4)  
    who | awk '{ print $5 }'
    ;;  
    *)  
    echo "Wrong input"
esac

実行サンプル:

./whoList.sh 
Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
2
console
ttys000
ttys001

./whoList.sh 
Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
3
Oct 3
Oct 3
Oct 3

./whoList.sh 
Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
1
maulinglawns
maulinglawns
maulinglawns

./whoList.sh 
Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
4
09:01
09:44
11:01

./whoList.sh
Press 1 for user name, 2 for terminal name, 3 for login date and 4 for time
7
Wrong input

ご覧のとおり、出力はすべて1つにまとめられています。、同じ行にはありません。

編集:OS X 10.11.6でテストされました。

bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

おすすめ記事