我正在编写一个脚本,从目录中包含模式$ f1,$ f2和$ f3的文件中选择行,并将包含该模式的行存储在我想要调用$file_$pattern.xls
的文件中,例如file1_2.54 Ghz.xls
。
#!/bin/bash
#my_script.sh to summarize p-state values
f1="2.54 Ghz"
f2="1.60 Ghz"
f3="800 Mhz"
for f in $f1 $f2 $f3
do
for file in *.txt
do
grep $f1 $file > ${file}_${f1}.xls
done
done
请帮我写一下剧本。
答案 0 :(得分:3)
两件事......
这样的事可能有用:
#!/bin/bash #my_script.sh to summarize p-state values f1="2.54 Ghz" f2="1.60 Ghz" f3="800 Mhz" for f in "$f1" "$f2" "$f3" do for file in *.txt do grep "$f" "$file" > "${file}_${f}.xls" done done
答案 1 :(得分:0)
你可以在shell中做所有事情,不需要grep或其他外部工具
#!/bin/bash
f1="2.54 Ghz"
f2="1.60 Ghz"
f3="800 Mhz"
for file in *.txt
do
while read -r line
do
case "$line" in
*"$f1"* )
echo "$line" >> "${file%txt}_${f1}.xls";;
*"$f2"* )
echo "$line" >> "${file%txt}_${f2}.xls";;
*"$f3"* )
echo "$line" >> "${file%txt}_${f3}.xls";;
esac
done < "$file"
done
答案 2 :(得分:0)
而不是
for f in $f1 $f2 $f3
使用
for f in {$f1,$f2,$f3}
并在内循环中重命名$ f1!