Phonebook.datファイルにデフォルトの登録簿があります。
$ cat phonebook.dat
Onkh,Gregor:0123456789
Steinert,Franz:02473894091
Rubrecht,Magdalena:01474653371
その後、次のようにファイル形式を指定できます。column
$ column -t -s ",:" phonebook.dat
Onkh Gregor 0123456789
Steinert Franz 0247389409
Rubrecht Magdalena 01474653371
しかし、ファイルの1行だけを出力したい場合はどうすればよいですか?ページベースのman
場合は、column
最後のパラメータとしてファイルが必要です。
この問題を解決しようとしましたが、sed
「、」および「:」を次のように置き換えても結果は一貫しません。
$ sed 's/,/\t/g; s/:/\t/g' telefonbuch.dat
Onkh Gregor 0123456789
Steinert Franz 02473894091
Rubrecht Magdalena 01474653371
書式設定されたファイルで1行を使用する方法はcolumn
?
ベストアンサー1
1行だけフォーマットするには、column
ユーティリティに1行だけを提供します。以下では、サンプルデータの行2にのみフォーマットを設定します。
$ sed -n '2p' file | column -s ',:' -t
Steinert Franz 02473894091
filename 引数はcolumn
オプションです。見つからない場合、ユーティリティは標準入力から読み取られます。上記のパイプラインでは、この事実を使用してコマンドの出力形式を指定しますsed
。
すべてのコマンドを使用して、電話帳からデータを抽出できます。ここでは、awk
コマンドを使用してMagdalena
2番目のフィールドの項目を出力します。
$ awk -F '[,:]' '$2 == "Magdalena"' file | column -s ',:' -t
Rubrecht Magdalena 01474653371
$ awk -v name="Magdalena" -F '[,:]' '(family != "" && $1 == family) || (name != "" && $2 == name)' file | column -s ',:' -t
Rubrecht Magdalena 01474653371
$ awk -v family="Rubrecht" -F '[,:]' '(family != "" && $1 == family) || (name != "" && $2 == name)' file | column -s ',:' -t
Rubrecht Magdalena 01474653371