如何从apk版本命令返回的结果中删除\ n

时间:2016-04-01 20:12:35

标签: linux sed grep

我正在运行命令:

apk version openssh

输出包括\ n。它看起来像这样:

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

我需要一种方法来更改此输出,使其看起来像这样:

     openssh-6.8_p1-r5 < 6.8_p1-r6 

所以要明确,我想:

  1. 摆脱\ n个字符
  2. 删除所有额外空格
  3. 删除标题。
  4. 不必保存到文件,而是一次运行一个命令来执行此操作。
  5. 有办法做到这一点吗?我一直是谷歌grep的例子,我尝试用它试图摆脱\ n但是没有成功。

    我仍在努力解决这个问题,但如果你有一些建议,我会很感激。

    编辑1

    我已经使用了sed,我已经明白了这一点:

    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 
    

    如您所见,我试图摆脱换行失败

    修改2

    使用&#34; tr&#34;替换换行符。越来越近。现在我的命令/输出如下所示:

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

3 个答案:

答案 0 :(得分:1)

将输出传递给

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

openssh-6.8_p1-r5 < 6.8_p1-r6

sed 1d删除标题行

tr -s将chars(在这种情况下为空格)压缩到一个实例。

答案 1 :(得分:0)

apk version openssh | sed&#39; s / Installed:// g&#39; | sed&#39; s /可用:// g&#39; | tr&#39; \ n&#39; &#39; &#39; | sed&#39; s / * // g&#39;

答案 2 :(得分:0)

您要求的one command to do this all at once是:

apk version openssh | awk 'NR>1{$1=$1;print}'
  • NR>1跳过第一个(标题)行
  • $1=$1将所有空白字符串更改为单个空格字符
  • print打印行