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