3

そのため、現在、以下に示すようにこれを行うコードを作成しました。このコードは機能し、変数をエコーし​​た後に本来の動作を行います。

a=`awk 'NR==2 {print $1}' $coor`

b=`awk 'NR==3 {print $2}' $coor`

c=`awK 'NR==4 {print $3}' $coor`

....しかし、これをさらに多くの行で行う必要があり、より一般的な表現が必要です。そこで、以下に示すループを作成しようとしました。構文に関しては、コードに問題はないと思いますが、ファイル「Cmain」に何も出力していません。

誰かが私を助けることができるかどうか疑問に思っていました。私はスクリプト作成が初めてです。

それが役に立ったら、私が読もうとしているものを投稿することもできます。

for (( i=1; i <= 4 ; i++ )); do
  for (( j=0; j <= 3 ; j++ )); do
    B="`grep -n "cell" "$coor" | awk 'NR=="$i" {print $j}'`"
  done
done

echo "$B" >> Cmain
4

3 に答える 3

4

の行を次の行に置き換えることができますawk

awk '{ for (i=1; i<=NF; i++) if (NR >= 2 && NR == i) print $(i - 1) }' file.txt

テストされた入力:

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80

出力:

11
22
33
44
55
66
77
于 2012-07-27T00:44:04.207 に答える
2

awk 'BEGIN {f=1} {print $f; f=f+1}' infile > outfile

于 2012-07-27T00:53:04.220 に答える
1

スペースで区切られた入力が にあると仮定してsed、 とを使用する代替手段:coreutilsinfile

n=$(wc -l infile | cut -d' ' -f1)
for i in $(seq 1 $n); do
  sed -n "${i} {p; q}" infile | cut -d' ' -f$i
done
于 2012-07-27T00:55:10.413 に答える