次のコマンドの次の文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にファイル自体を読むようにしてください。