1行目と4行目のみを印刷するように、次の出力形式を指定する方法はありますか?次のように、最初の行と4番目の行が同じ行に表示される場合:
sw pool test
(括弧なし)status up
コマンドと出力の例:
注文する:
show server pool
出力:
sw pool test { members 1 ip_addr 200.200.200.111 status up
目的の出力形式(行1の末尾にある中括弧を削除する必要があります):
sw pool test status up
好ましくは、awkを使用してこの出力をどのように取得できますか?
答え1
awkを使う
これにより、1行目{
と4行目が印刷されます。
$ show server pool | awk 'NR==1{sub(/{/, ""); printf "%s",$0} NR==4'
sw pool test status up
どのように動作しますか?
NR==1{sub(/{/, ""); printf "%s",$0}
条件は
NR==1
最初の行を選択します。この行の場合は、{
deleteコマンドを使用してsub
からを使用して行を印刷しますprintf
(末尾の改行なし)。NR==4
条件は
NR==4
4行目を選択します。この条件に指定された操作がないため、awk
基本操作が実行されます。私たちが望むようにラインが印刷されます。
sedを使う
同じ機能が次のように機能しますsed
。
$ show server pool | sed 'h;N;N;x;N; s/{\n//'
sw pool test status up
どのように動作しますか?
h
これにより、予約済みスペースに最初の行が保存されます。
N;N
2号線と3号線です。
x
これはホールド空間とパターン空間を交換する。これにより、ライン1がパターン空間に再配置されます。
N
次に、次の行(4行目)をパターン空間に読み込み、1行目に追加します。
s/{\n//
これにより、1行目の末尾で中括弧と改行文字が削除され、1行と4行が中括弧が削除された状態にマージされます。印刷された内容です。