簡體   English   中英

在bash中使用awk

[英]for and awk in bash

我在與awk結合使用bash中的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;
   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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM