【问题标题】:Grep from a file and store the result lines in separate file, and the file name should increment with every entry从文件中grep并将结果行存储在单独的文件中,文件名应随每个条目递增
【发布时间】:2016-01-28 19:53:58
【问题描述】:

我正在尝试编写一个 shell 脚本,它将逐行从 csv 文件中的列中获取输入,并且该输入用于在另一个文件中进行搜索。 找到结果模式的行应存储在另一个文件中。并且随着每次这样的迭代,文件名也应该增加。 例如,test1、test2、test3、...

下面是我使用的代码:

#!/bin/bash


input=file1.csv

while
IFS=,
read -a csv_line;
do echo "${csv_line[1]}";
for((i=0;i<=22558;i++))
do
#echo "${csv_line[1]}";
filename=$'test'${i++};
grep "csv_line[1]" log_file > filename.txt;
echo=$filename;
echo="$csv_line[1]}"
done<file1.csv
done

我没有收到任何错误,但是当我执行脚本时,它既没有显示任何内容,也没有存储在文件中。使用我的代码,文件名不会更改为 test1。但仍为“filename.txt”

【问题讨论】:

  • 请看:shellcheck.net
  • 请缩进您的代码。
  • 感谢您推荐该网站。我做了改变。 #!/bin/bash 而 IFS=, 读取 -r csv_line;做回声“${csv_line[1]}”; for((i=0;i 文件名.txt; #echo=$文件名; done
  • 你可以(并且应该)edit你的问题来添加它。

标签: bash shell


【解决方案1】:

这是你需要的吗?

#!/bin/bash 

counter=0
while read -r csv_line
do 
    value=$(cut -d ',' -f2 <<< $csv_line)
    counter=$((counter+1))
    grep $value RBFCDC_in.log.2015-11-23.PROD > "test$counter"; 
done < dbo_fidessa_order_hist_sql.csv 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多