我有一个按顺序包含3行的文件:
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_off.vtran"
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_on.vtran"
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_sanity_dft.vtran"
我必须按顺序逐个执行unix命令行中的所有行:
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_sanity_dft.vtran"
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_off.vtran"
bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_on.vtran"
我怎样才能重新排列&使用单个命令行执行所有3个命令?
我按照你的建议尝试过:
line1: echo start
line2: bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_sanity_dft.vtran"
line3: echo hello
line4: bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_off.vtran"
line5: echo bye
line6: bsub -I -q vtran "vtran -scan_pad 0X ../test/pm30_60_224_jtag_bist_full_vector_on.vtran"
line7: echo end
它仍然只执行line1& 2号线。在那之后退出..
答案 0 :(得分:5)
您可以使用tac
(反向连接和打印文件),打印最后的第一项然后反转:
tac file | awk 'NR==1 {line=$0; next} 1; END{print line}' | tac
非常感谢fedorqui回答我的第一部分问题。一世 可以将命令的输出重定向到文件&从中获取 命令行逐个执行。相反,你能挺身而出吗? 建议一种方法在一个命令中执行它(不重定向到 档案&源)
你可以管道打击:
tac file | awk 'NR==1 {line =$0; next} 1; END{print line}' | tac | bash
$ cat file
1
2
3
$ tac file | awk 'NR==1 {line =$0; next} 1; END{print line}' | tac
3
1
2
分段:
逆转
$ tac file
3
2
1
在最后打印第一项:
$ tac file | awk 'NR==1 {line=$0; next} 1; END{print line}'
2
1
3
反向:
$ tac file | awk 'NR==1 {line =$0; next} 1; END{print line}' | tac
3
1
2