我有一个文件,其中有千余行,每行都有一个 12 个字符的字符串。我还有一个 awk 脚本,其中有一个函数。#!/usr/local/bin/gawk -f ...
我有一个文件,其中有千多行,每行都有一个 12 个字符的字符串。
我还有一个 awk
脚本,其中有一个函数。
#!/usr/local/bin/gawk -f
@include "home/user/functions.awk"
{
STRType=substr($0,27+23,2);
TYPEOUT=substr($0,28,3);
if(STRType == "O1")
{
filterTxtforfunc($0,"PRH1DCHK");
}
else
if(STRType=="H6")
{
print substr($0,28)
fflush()
}
else
if(STRType=="J7" && TYPEOUT=="000")
{
print substr($0,28)
fflush()
}
}
我想 input.txt
逐行读取文件并使用每行的前 8 个字符作为函数的输入 filterTxtforfunc
。
我检查过类似的主题,但它们对我没有帮助。除了 shell 脚本之外,我没有可能使用 Python、Jason 和其他语言和库。我用 bash 脚本编写了它,但现在我需要使用, getline
因为在 awk 文件中无法使用 bash 脚本。
这是我的 bash 脚本,它可以按我想要的方式工作(但我无法在 awk 脚本文件中使用它):
filterTxtforfunc() {
echo does something
}
input_file="input.txt"
while IFS= read -r line; do
# Extract the first 8 characters from the line
code="${line:0:8}"
# Dynamically build the command and execute it
filterTxtforfunc "$0" "$code"
done < "$input_file"
我用过但不起作用的是:
BEGIN {
input_file="input.txt"
while ( (input_file | getline line) > 0 ) {
ARGV[ARGC++] = line
}
close(input_file)
}
input.txt是这样的:
WRM3BHIZ0004
NRB1SAPB0122
LRT1SYGM0114
KRF1LAEI0451
JRU1TEEE0764
ZRQ1LQWS0666
PRH1DCHK0904
...