我想将变量传递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 影响第二个 awk 之前,第二个 awk 已经执行。
怎么样:
awk 'substr ($0, 10, 10) ~ /^[[:blank:]]*$/' scr1
提取子字符串,并检查它是否与所有空白的模式匹配。让 awk 本身读取文件,而不是通过 cat 和管道。