shell - 如何确认两个作业信息之间是否存在节点?
问题描述
在我的项目中,我有 pbs 工作信息文件:JobInfofile
JobInfofile 的一些内容是这样的:
1089608.mu01 maad-zhangy cal-l ct+gd+sdg-160FWH 25025 22 528 -- 72:00:00 R 07:20:52
cu222/0-23+cu206/0-23+cu191/0-23+cu186/0-23+cu175/0-23+cu163/0-23+cu158/0-23
+cu142/0-23+cu125/0-23+cu124/0-23+cu118/0-23+cu116/0-23+cu115/0-23
+cu114/0-23+cu113/0-23+cu112/0-23+cu111/0-23+cu110/0-23+cu109/0-23
+cu108/0-23+cu089/0-23+cu047/0-23
1090225.mu01 phy-xiel cal-l multijobs.pbs 21540 20 480 -- 72:00:00 R 46:00:54
cu198/0-23+cu144/0-23+cu123/0-23+cu122/0-23+cu121/0-23+cu120/0-23+cu119/0-23
+cu098/0-23+cu095/0-23+cu094/0-23+cu092/0-23+cu091/0-23+cu087/0-23
+cu086/0-23+cu085/0-23+cu083/0-23+cu081/0-23+cu080/0-23+cu079/0-23
+cu076/0-23
1091846.mu01 maad-huangy cal-l Re26Ro01-02 13256 6 144 -- 72:00:00 R 32:35:35
cu200/0-23+cu105/0-23+cu069/0-23+cu068/0-23+cu067/0-23+cu066/0-23
1092285.mu01 maad-zhoukc cal-l Iso_Driven_Hoff_ 30786 6 144 -- 72:00:00 R 29:18:04
cu172/0-23+cu171/0-23+cu164/0-23+cu155/0-23+cu101/0-23+cu100/0-23
1092768.mu01 maad-zhoukc cal-l Iso_Driven_Hon1E 3271 6 144 -- 72:00:00 R 27:35:55
cu036/0-23+cu035/0-23+cu034/0-23+cu033/0-23+cu032/0-23+cu031/0-23
1092804.mu01 maad-zhoukc cal-l Iso_Driven_Hon5E 9137 6 144 -- 72:00:00 R 27:34:03
cu030/0-23+cu029/0-23+cu028/0-23+cu027/0-23+cu026/0-23+cu025/0-23
1092805.mu01 maad-leeh cal-l DINO 5942 18 432 -- 72:00:00 R 27:23:35
cu084/0-23+cu062/0-23+cu059/0-23+cu058/0-23+cu057/0-23+cu056/0-23+cu052/0-23
+cu051/0-23+cu048/0-23+cu041/0-23+cu024/0-23+cu022/0-23+cu021/0-23
+cu016/0-23+cu011/0-23+cu005/0-23+cu004/0-23+cu003/0-23
现在我想确认在节点上运行的选定作业。
例如:作业 1089608 正在节点上运行:
cu222/0-23+cu206/0-23+cu191/0-23+cu186/0-23+cu175/0-23+cu163/0-23+cu158/0-23
+cu142/0-23+cu125/0-23+cu124/0-23+cu118/0-23+cu116/0-23+cu115/0-23
+cu114/0-23+cu113/0-23+cu112/0-23+cu111/0-23+cu110/0-23+cu109/0-23
+cu108/0-23+cu089/0-23+cu047/0-23
作业 1091846 正在节点上运行:
cu200/0-23+cu105/0-23+cu069/0-23+cu068/0-23+cu067/0-23+cu066/0-23
我努力了:
grep 1091846 JobInfofile | grep cu105
结果是错误的,因为“1091846”和“cu105”在不同的行。
我试过另一种方式:
grep -A 1 1091846 JobInfofile | grep cu105
可以,但对于以下情况是错误的:
grep -A 1 1089608 JobInfofile | grep cu108
有没有办法确认所选节点存在于 mu01 和 mu01 之间?
例如,对于工作 1089608,我只关心 1089608.mu01 和 1090225.mu01 之间的节点内容
解决方案
Could you please try following, though not completely sure. Where val
is a variable where you could mention value which you want to search.
awk -v val="1089608" '
/^[0-9]{7}/{
flag=""
}
/^[0-9]{7}/ && substr($0,1,7)==val{
flag=1
print $1
next
}
flag
' Input_file
推荐阅读
- sql - 如何将存储在表中的符号传递给存储过程条件?
- javascript - 使用 JS 单击链接时更改 CSS 中的设置
- python - 如何让 Pygame time.delay() 在不冻结窗口的情况下运行?
- heroku - 我无法通过网络登录heroku,该怎么办?
- jquery - 使用 jQuery 将 HTML 添加到 iFrame 并查找类
- java - Using mockito to mock the entity manager and test a stateless EJB
- javascript - 如何使用 react-native-fetch-blob 获取 excel 文件
- r - kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线
- node.js - Nodejs函数将字符串返回到主程序
- javascript - 对子项隐藏 createBottomTabNavigator