我正在尝试以下事情但无法成功
我有以下内容的文件
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
ylog_0-new
ylog_1-new
我有下面的脚本
for i in `cat new.txt`
do
case $i in
system-events_*)
for file in `cat new.txt | grep system-events_*`
do
echo "$file" >> polo.txt
done
;;
events_*)
for file in `cat new.txt | grep events_*`
do
echo "$file" >> polo.txt
done
;;
ylog_*)
for file in `cat new.txt | grep ylog_*`
do
echo "$file" >> polo.txt
done
;;
esac
done
但它会多次打印值,因为我在这里使用了案例
电流输出
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
events_0-new
events_1-new
events_2-new
events_3-new
events_4-new
events_5-new
events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
system-events_0-new
system-events_1-new
system-events_2-new
system-events_3-new
system-events_4-new
system-events_5-new
system-events_6-new
ylog_0-new
ylog_1-new
ylog_0-new
ylog_1-new
所需的输出应该是如果 events_* 的大小写匹配,它应该只打印一次所有事件输出,它不应该为 events_0-new 和 events_1-new 运行相同的案例,等等 events_2-new 直到结束。
如果 events_* 的大小写匹配,这就是我想要的,那么它应该打印如下而不是七次 events_0-new events_1-new events_2-new events_3-new events_4-new events_5-new events_6-new
实际上我想在 curl 命令中使用它们作为环境变量来插入仅属于该字符串的数据
例子:
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d events.json
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d ylog.json
curl -X PUT 'http://localhost:9200/$file' -H 'Content-Type: application/json' -d system-events.json
这里的 $file 应该从 new.txt 作为 events_0 ...events_6 等其他字符串获取。
可能是我缺乏完成这项工作的地方,或者不知道最简单的方法。
如果案例匹配,您可以帮助我如何只打印一次它应该运行一次作为案例它不应该重复那些具有相同案例的其他字符串。
请指导。
问候,山姆
看起来好像您只想获取
_
读取的字符串中第一个之前的部分,new.txt
并在调用中使用它curl
。如果您需要在处理文件之前从文件中过滤掉三种特定类型的行: