如何在 linux 终端中自定义 "grep"

How to do a custom "grep" in linux terminal

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

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

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

cat filename | grep load

我会得到类似

的输出

load drned-internal-asr9k-rt24711

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

drned-internal-asr9k-rt24711.txt

即删除“加载”并在末尾添加“.txt”。那怎么办呢??

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

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

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

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

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

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

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

awk '{for(i=1;i<NF;i++){if(tolower($i)~/^load$/){print $(i+1) ".txt"}}}' file.txt

加载后匹配下一列并在输出中附加 .txt。