解析文本文件,找到匹配的行并保存到文本文件

时间:2017-10-09 23:43:20

标签: bash

我如何编写一个解析文本文件的bash脚本,查找包含单词command:的所有行,然后将找到它的每一行的全部内容保存到文本文件中?

2 个答案:

答案 0 :(得分:3)

命令是

grep command: your_filename >> save_filename

哪个是

#!/bin/bash
grep command: $1 >> $2

执行
scriptname your_filename save_filename

谢谢大卫

请注意,我使用的是appender>>而不是create>。后者确保只有你最后一次运行的文件,而appender会在文件中添加新行(如果它已经存在)。

答案 1 :(得分:0)

如果您正在寻找 bash grep行为的解决方案

#!/bin/bash
# Usage: ./mygrep ERE_PATTERN FILENAME
while IFS= read -r line || [[ $line ]]; do
    [[ $line =~ $1 ]] && echo "$line"
done <"$2"

(我们在pretty standard way中迭代第二个位置参数$2中给出的文件的行,检查与作为{{3}内的第一个参数给出的模式的匹配使用=~运算符,打印匹配的所有行。)

像以下一样调用它:

./mygrep command: file

虽然 grep慢,但这个脚本的一个好处是它支持 POSIX ERE (扩展正则表达式)默认情况下< / strong>(您不需要像-E中那样指定grep),例如:

./mygrep 'com.*:' file
./mygrep '^[[:digit:]]{3}' file
# etc