【发布时间】:2020-07-30 04:18:52
【问题描述】:
我有一个 txt 文件,其路径被解析为 $1 和一个字符串 ($2)。 Txt 文件包含列 Dir、Dest,并且在每一行中,应将 Dir 中包含字符串 $2 的文件的多行输出到 Dest 路径。
我的想法是这样的,但是好像不行,手动调试也解决不了问题。
#!/bin/bash
if [ -f $1 ]
then
tail -n +1 $1 | while IFS=, read -r col1 col2
do
if [ -d $col1]
then
grep -rn -c “$2” $col1 * > $col2
fi
done
fi
来自终端的输入是这个
./Script_1.sh /Users/andjela/Desktop/test.txt string
输入(test.txt)文件是
Dir,Dest
/Users/andjela/Desktop/OS/dir1,/Users/andjela/Desktop/OS/rez1.txt
/Users/andjela/Desktop/OS/dir2,/Users/andjela/Desktop/OS/rez2.txt
预期文件的示例(Dest,/Users/andjela/Desktop/OS/rez1.txt)应该类似于
file1.txt: 2 (num of lines)
file2.txt: 1
【问题讨论】:
-
能否提供“实际结果”和“预期结果”?
-
也提供一个txt文件的样本
-
@EricBolinger 我已经编辑了问题,感谢您的通知
-
您说“计算所有出现次数”,但您正在计算行。如果您的目标字符串在一行上出现多次,它只会被计为
1——您能否澄清一下,这是您想要的吗?另外,我会在您的 read 中使用更有意义的名称...read -r searchdir outfile? -
@StephenP 是的,你是对的,行数。已编辑
标签: linux bash unix scripting grep