【问题标题】:How to do a custom "grep" in linux terminal如何在 linux 终端中自定义“grep”
【发布时间】:2022-01-12 10:18:24
【问题描述】:

假设我的文件只包含如下文本:

Test transition to drned-internal-asr9k-rt24711
   load drned-internal-asr9k-rt24711
   commit**

如果我这样做,现在在终端上

filename | grep 加载

我会得到类似的输出

加载 drned-internal-asr9k-rt24711

但是如何修改我的 grep 命令以获取输出

drned-internal-asr9k-rt24711.txt

即删除“load”并在末尾添加“.txt”。那该怎么做呢??

【问题讨论】:

标签: command-line grep


【解决方案1】:

可能不是最好的解决方案,但是:

cat | grep load | cut -c4- | sed 's/$/.txt/'

cut -c4- 将删除前 4 个字符

sed 's/$/.txt/' 将在输出末尾添加“.txt”

【讨论】:

  • load 之前有空格,因此如果您不想在结果中出现此空格,则需要删除 4 个以上的字符。
【解决方案2】:

这可以通过以下方式实现:

sed -nr 's/.*load\s+(.*)/\1.txt/p' file.txt

这匹配load 之后的任何内容(加上一个或多个空格)并返回它,并在末尾添加.txt

【讨论】:

    【解决方案3】:
    awk '{for(i=1;i<NF;i++){if(tolower($i)~/^load$/){print $(i+1) ".txt"}}}' file.txt
    

    这匹配加载后的下一列并将 .txt 附加到输出中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2021-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多