如何在 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。
假设我的文件只包含如下文本:
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。