【发布时间】:2021-02-26 05:57:58
【问题描述】:
我在一个文件夹中有多个文件,我想扫描每个文件的内容以检查字符串,例如“abc”(区分大小写)。我想输出文件名以及带有 1 或 0 等标签的字符串,以判断字符串是否存在。例如。如果有文件
A1
A2
B3
B5
C8
Z7
并且只有 B3 和 C8 包含 "abc" 。输出应该如下
A1 abc 0
A2 abc 0
B3 abc 1
B5 abc 0
C8 abc 1
Z7 abc 0
所有这些都应该打印到"output.txt" 文件中。
我的代码似乎可以工作:
#!/bin/bash
touch output.txt
for f in * ;
do echo ${f} ;
echo "abc" ;
grep -w "abc" ${f}| wc -l ;
done
输出是这样的
A1
abc
0
A2
abc
0
B3
abc
1
B5
abc
0
C8
abc
1
Z7
abc
0
但是,我无法将它们打印到 txt 文件中,也无法按照我想要的顺序进行。请多多指教。
编辑:我 cd 进入包含文件的目录,txt 文件位于外部根目录中。
编辑 2:这与 "echo -n" prints "-n" 不同 因为,我想使用 grep 打印出文件名,同时根据特定字符串的存在/不存在添加标签
【问题讨论】:
-
你是什么意思按我想要的顺序?您的程序的输出似乎是有序的。
-
这能回答你的问题吗? 'echo' without newline in a shell script
-
@oguz ismail :即使它是有序的,我也无法将输出打印到 txt 文件中
-
是的,你需要
done > output.txt。虽然我更喜欢下面发布的 awk 程序 Tripleee。