【问题标题】:How to remove all characters after a certain character in bash for a whole file如何删除整个文件的bash中某个字符之后的所有字符
【发布时间】:2017-12-12 01:50:10
【问题描述】:

我发现了几个这样的问题,但他们没有谈论使用整个文件。

我有一个来自旧操作系统的软件包文件,但我将其恢复出厂设置并希望确保所有这些软件包都已安装。

查看文件here

但是我不需要/之后的所有额外信息,我只想要包的名称,这样我就可以sudo apt installcat packages.formatted`。

如何使用grep 等工具删除它。

示例

nautilus/oldstable,now 3.14.1-2 armhf [installed]
minecraft-pi/stable,now 0.1.1-4 armhf [installed]

变成

nautilus
minecraft-pi

注意:如果你能找到更好的方法让我安装所有这些包,你也可以回答这个问题,但这不是这个问题的重点

【问题讨论】:

    标签: bash grep apt-get


    【解决方案1】:

    您可以为此使用awk(或cut)。本质上是使用该字符分隔文件并仅返回第一个字段:

    awk -F"/" '{print $1}' yourfile > outputfile
    

    这也可以用管道代替:

    awk -F"/" '{print $1}' packages.txt | sudo apt install
    

    假设apt 可以像这样从标准输入读取。

    【讨论】:

    • 谢谢。你知道grepawksed有什么好的教程吗?我总是低估这些工具的威力
    • 另外,aptapt-get 不能通过管道传输
    • 我认为,为了学习,最好的选择是学习一些正则表达式,因为这三个工具在正则表达式知识下变得无限有用(sed 几乎完全围绕它构建)。我不知道有什么好的教程。如果您正在处理分隔数据,只需瞄准awksed 如果您需要识别文件流中需要更改的数据块; grep 如果您需要在一个或多个文件中搜索数据。最大的诀窍是知道使用哪种工具来完成任何任务。
    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2017-01-04
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多