awkへの2番目の呼び出しに変数値を渡す

awkへの2番目の呼び出しに変数値を渡す

次のコマンドの次の文varに変数を渡したいと思います。awk

cat scr1|awk '{val=substr($0,10,10)} 1'|awk '/           /{print $0}'

このステートメントは、ファイルの10〜19番目の場所でのみ10個のスペースで構成された文字列を検索し、その行のみを返します。誰でも良い方法があれば教えてください。

答え1

substr() から返される文字列が 10 個の空白で構成されていることを確認してください。

awk 'substr($0,10,10))=="          "' infile

答え2

「ファイルの 10 ~ 19 番目の位置に 10 個の空白を含む文字列のみを検索し、その行のみを返す」には:

$ cat file
12345678901234567890123
123456789          0123
12345678901234567890123

$ awk '/^.{9} {10}/' file
123456789          0123

答え3

#!/usr/bin/python
import re
k=re.compile(r'.{9}\s{10}')
o=open('filename','r')
for h in o:
    if re.search(k,h):
        print h
~                  

入力する

 cat filename
123456789           1223
praveen1234444

出力

python script.py 
123456789           1223

答え4

それは動作しません。パイプラインのすべてのコマンドは同時に開始されます。したがって、最初の awk が 2 番目の awk に影響を与える前に、2 番目の awk はすでに実行されています。

どうですか?

awk 'substr ($0, 10, 10) ~ /^[[:blank:]]*$/' scr1

部分文字列を抽出し、すべて空白があるパターンと一致することを確認します。猫とパイプを通すのではなく、awkにファイル自体を読むようにしてください。

関連情報