好吧,我绝对不是这个菜鸟(只是几周前才开始尝试为我的工作编写代码),所以请对我轻松一点aix系统上的IM我有file1,file2和file3,它们都包含1列数据(文本或数字)。
file1
VBDSBQ_KFGP_SAPECC_PRGX_ACCNT_WKLY
VBDSBQ_KFGP_SAPECC_PRGX_ADDRM_WKLY
VBDSBQ_KFGP_SAPECC_PRGX_COND_WKLY
VBDSBQ_KFGP_SAPECC_PRGX_CUSTM_WKLY
VBDSBQ_KFGP_SAPECC_PRGX_EPOS_DLY
VBDSBQ_KFGP_SAPECC_PRGX_INVV_WKLY
file2
MCMILS03
HGAHJK05
KARNEK93
MORROT32
LAWFOK12
LEMORK82
file3
8970597895
0923875
89760684
37960473
526238495
146407
每个文件中的行数完全相同。我还有一个名为“ dummy_file”的文件,这是我要拉出,更换零件并弹出的新文件。
WORKSTATION#JOB_NAME
SCRIPTNAME "^TWSSCRIPTS^SCRIPT"
STREAMLOGON "^TWSUSER^"
-job JOB_NAME -user USER_ID -i JOB_ID
RECOVERY STOP
我只需要替换此文件中我关心的3个字符串,对于以后使用的虚拟文件,它们将始终相同
JOB_NAME
JOB_ID
USER_ID
[JOB_NAME有2个条目,其他只有1个。我想要的是获取原始文件,用文件1的第1行替换两个JOB_NAME条目,然后用文件2的第1行替换USER_ID,然后用文件3的第1行替换JOB_ID,然后将其扔到新文件中我想对文件1、2和3中的所有行重复此过程,因此下一个将其条目替换为3个文件的第2行,然后下一个将其条目替换为3个文件的第3行,然后将所有文件中第3行的内容,依此类推,依此类推,等等)
原始文件和预期的输出如下:
WORKSTATION#JOB_NAME SCRIPTNAME "^TWSSCRIPTS^SCRIPT" STREAMLOGON "^TWSUSER^" -job JOB_NAME -user USER_ID -i JOB_ID RECOVERY STOP WORKSTATION#VBDSBQ_KFGP_SAPECC_PRGX_ACCNT_WKLY SCRIPTNAME "^TWSSCRIPTS^SCRIPT" STREAMLOGON "^TWSUSER^" -job VBDSBQ_KFGP_SAPECC_PRGX_ACCNT_WKLY -user MCMILS03 -i 8970597895 RECOVERY STOP
据我所知(再次知道它的废话)
file="/dir/dir/dir/file1"
while IFS= read -r line
do
cat dummy_file | sed "s/JOB_NAME/$file1/" | sed "s/JOB_ID/$file2/" | sed "s/USER_ID/$file3" #####this is where i get stuck as i dont know how to reference file2 and file3##### >>new_file.txt
done
好吧,我对此绝对是个菜鸟(只是几周前才开始尝试为我的工作编写代码),所以请对我轻松一点,在aix系统上,即时消息我有file1,file2和file3,它们都包含1列数据...
这可能对您有用(GNU并行和sed):
使用GNU awk: