linux - 如何从apk版本命令返回的结果中去掉\n

标签 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. 删除 header 。
  4. 不必保存到文件,只需运行一条命令即可一次性完成所有操作。

有没有办法做到这一点?我一直在谷歌搜索 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

使用“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:~# 

最佳答案

管道输出到

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

openssh-6.8_p1-r5 < 6.8_p1-r6

sed 1d 删除标题行

tr -s 将字符(在本例中为空格)压缩到一个实例。

关于linux - 如何从apk版本命令返回的结果中去掉\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36365069/

相关文章:

regex - grep 不匹配的端口@服务器

linux - 无法从托管虚拟机(即我的 ubuntu 服务器)的计算机以外的其他计算机访问 ubuntu 服务器

linux - 为入站调用配置 linux asterisk

python - 如何在Linux、Nativly(Python、C、Java)下提取office嵌入的OLE文件?

regex - Shell 脚本 - sed 不起作用

linux - 在 shell 脚本中对日期进行验证

linux - CPU 亲和性掩码(将线程放在不同的 CPU 上)

xml - 使用 xmlstarlet 或 xmllint 获取属性值

bash - 使用 sed 内联替换部分匹配行

awk - 如何使用grep输出每一行的结果?