shell - 需要有关 unix 脚本的帮助以从特定位置读取数据并使用查询中提取的数据

标签 shell unix awk sh ksh

输入文件:

ADSDWETTYT017775227ACG
ADSDWETTYT029635225HCG
ADSDWETTYC018525223JCG
ADSDWETTYC987415221ACG
ADSDWETTCC891235219ACG
ADSDWETTTT074565217ACG
ADSDWETTYT567895213ACG
ADSDWETTYH037535215ACG
ADSDWETTYC051595211ACG
ADSDWETTYT052465209ACG
ADSDWETTYT067595207ACG
ADSDWETTYT077515205ACG

需要检查文件中第 10 个位置是否包含/以 T 开头,如果它以“T”开头,那么我需要从 16 个字符的 14 个字符中获取值。

从上面的文件我期待下面的输出,

'5227','5225','5217','5213','5209','5207','5205'

我应该将此结果分配给一些常量,例如(下面的结果),并且应该在查询 where 子句中使用,如下所示,

result=$(awk '
        BEGIN{
        conf="" };
{       if(substr($0,10,1)=="T"){
        conf=substr($0,16,4);

{NT==1?s="'\''"conf:s=s"'\'','\''"conf}
}
}
END {print s"'\''"}
' $INPUT_FILE_PATH  

db2 "EXPORT TO ${OUTPUT_FILE}  OF DEL select STATUS FROM TRAN where TN_NR in (${result})"

我需要一些帮助来增强 awk 命令并在查询 where 子句中传递常量。请帮忙。

最佳答案

用你展示的 sample ,尝试;请尝试以下 awk 代码。

awk -v s1="'" 'BEGIN{OFS=", "} substr($0,10,1)=="T"{val=(val?val OFS:"") (s1 substr($0,16,4) s1)} END{print val}'  Input_file

添加上述代码的非一行形式:

awk -v s1="'" '
BEGIN{ OFS=", " }
substr($0,10,1)=="T"{
  val=(val?val OFS:"") (s1 substr($0,16,4) s1)
}
END{
  print val
}
'  Input_file

要将此代码的输出保存到 shell 变量中,请尝试以下操作:

value=$(awk -v s1="'"'BEGIN{OFS=", "} substr($0,10,1)=="T"{val=(val?val OFS:"") (s1 substr($0,16,4) s1)} END{print val}' Input_file)

说明:为上述代码添加详细说明。

awk -v s1="'" '             ##Starting awk program from here setting s1 to ' here.
BEGIN{ OFS=", " }           ##Setting OFS as comma space here.
substr($0,10,1)=="T"{       ##Checking condition if 10th character is T then do following.
  val=(val?val OFS:"") (s1 substr($0,16,4) s1) ##Creating val which has values from  current line as per OP requirement.
}
END{                        ##Starting END block of this program from here.
  print val                 ##Printing val here.
}
'  Input_file               ##Mentioning Input_file name here.

关于shell - 需要有关 unix 脚本的帮助以从特定位置读取数据并使用查询中提取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68232350/

相关文章:

java PosixFileAttributes 返回错误的 atime 和 mtime

parsing - ctags:获取C函数结束行号

linux - 使用 bash 脚本如何从包含文件的文件夹中删除最后 12 个字符

linux - Linux 中的恢复脚本第 2 部分

Linux:如何将两个终端命令的输出一起写入一个文件?

shell - 在 Hbase shell 上运行多个查询,无需再次调用 hbase shell

shell - 如何调用 bash,在新 shell 中运行命令,然后将控制权交还给用户?

regex - Lookahead 和 Look After 在 unix 终端中的 grep

shell - 测试 -d 目录 true - 子目录 false (POSIX)

perl - 是否有一种相当可移植且简洁的方法来从脚本中解析环境变量?