2016-04-01 7 views
0

私は、コマンドを実行していることにより、返される結果から、\ nを取り除くしますはどのようにAPK versionコマンド

apk version openssh 

出力は\ nを含んでいます。

  1. GET:

     openssh-6.8_p1-r5 < 6.8_p1-r6 
    

    だから、明示的であるために、私がしたい:

    testbox:~# apk version openssh 
    Installed:        Available: 
    openssh-6.8_p1-r5      < 6.8_p1-r6 
    testbox:~# 
    

    が、私はそれがこのようになりますように、この出力を変更する方法が必要です:それはこのようになります\ n文字を削除する

  2. 余分なスペースをすべて削除します。
  3. ヘッダーを削除します。
  4. ファイルに保存する必要はありませんが、一度に1つのコマンドを実行するだけです。

これを行う方法はありますか?私はgrepのgoogleの例を見てきましたが、\ nしかし、まだ成功していないものを取り除こうと試みました。

私はまだこの方法で作業していますが、いくつかの提案があればそれを感謝します。

testbox:~# apk version openssh | sed 's/Installed://g'| sed 's/Available://g' | sed 's/\n//g' 

openssh-6.8_p1-r5      < 6.8_p1-r6 

あなたが見ることができるように、改行を取り除くために私の試みは

に失敗しました:私はSED使ってきたと私はこれまでそれを持っている

EDIT 1

編集2

改行を置き換えるのに「tr」を使用する。近くなってる。今私のコマンド/出力は次のようになります

testbox:~# apk version openssh | sed 's/Installed://g'| sed 's/Available://g' | tr '\n' ' ' 
           openssh-6.8_p1-r5      < 6.8_p1-r6 testbox:~# 
+0

' awk'またはラインここで便利です。たぶん '| sedの/ \ s +// '? –

答えて

0

はあなたが尋ねたone command to do this all at onceは次のとおりです。

apk version openssh | awk 'NR>1{$1=$1;print}' 
  • NR>1
  • $1=$1は、1つの空白にホワイトスペースのすべてのチェーンを変更する最初の(ヘッダー)行をスキップ文字
  • printプリントさえ `sed`は次のようになり、多分
+1

私はあなたが正しいと思います!あなたは少しそれを私に歩いてもらえますか? – Happydevdays

+0

私は説明を加えました。 UNIX上でテキスト操作を行う場合は、Arnold Robbinsの著書Effective Awk Programming、第4版を強くお勧めします。 –

+1

甘い!ヒントのおかげで! – Happydevdays

1

パイプ出力を

... | sed 1d | tr -s ' ' 

openssh-6.8_p1-r5 < 6.8_p1-r6 

sed 1d 1つのインスタンスにヘッダー行を

tr -sスクイーズの文字(この場合はスペース)を削除します。

+0

ああ!あなたはとてもエレガントです! sed 1dが何をしているのか教えていただけますか? – Happydevdays

0

apk version openssh | sedの/ Installed:// g '| sedの/ Available:// g '| tr '\ n' '' | SEDさん/ * // G '

関連する問題