在bash中为和awk
我在bash中遇到了一些与awk结合的for循环问题;我在Ubuntu 14.04中运行它。这是我正在写的剧本:在bash中为和awk,bash,awk,Bash,Awk,我在bash中遇到了一些与awk结合的for循环问题;我在Ubuntu 14.04中运行它。这是我正在写的剧本: #!/bin/bash L=99; for j in 1 2 3 do awk -v J=$j ' BEGIN {active=0} /Sweep 6/ {active=1} /Energy/ { a=substr($6,1,length($6)-1); if ((active) && (a==J)) { getline; g
#!/bin/bash
L=99;
for j in 1 2 3
do
awk -v J=$j '
BEGIN {active=0}
/Sweep 6/ {active=1}
/Energy/ {
a=substr($6,1,length($6)-1);
if ((active) && (a==J)) {
getline;
getline;
getline;
print a+1, $5
}
}
'
done
没有输入我正在处理的文本文件的细节,脚本所做的只是运行j=1的循环,而不是j=1、2和3。问题在哪里
提前谢谢 您的命令很好:
~$ cat >myfile
a
b
~$ for j in 1 2 3; do awk -v J=$j '{print J}' myfile; done
1
1
2
2
3
3
我看到的唯一缺失是awk应该解析的文件名。我能看到的唯一错误是每次循环运行时都要重新打开该文件,stdin到循环或整个脚本将不起作用 如果文件很小且无法重绕,可以将其存储在bash变量中
content="`cat`"
for j in 1 2 3
do
echo "$content" | awk 'etc...'
done
在awk之前和之后尝试使用
echo“j=$j”
进行一些调试。谢谢,现在它可以工作了!我是从命令行传递文件名的,但似乎是错误的方式。