英文:
Awk: parse node names out of "40*r13n15:40*r10n61:40*r11n18:40*r09n15"
问题
以下是翻译好的内容:
我有一个用于选择节点的Linux脚本。
例如:
4
40*r13n15:40*r10n61:40*r11n18:40*r09n15
正确的结果应该是:
r13n15
r10n61
r11n18
r09n15
我的Linux脚本内容如下:
hostNum=`bjobs -X -o "nexec_host" $1 | grep -v NEXEC`
hostSer=`bjobs -X -o "exec_host" $1 | grep -v EXEC`
echo $hostNum
echo $hostSer
for i in `seq 1 $hostNum`
do
echo $hostSer | awk -F ':' '{print $'$i'}' | awk -F '*' '{print $2}'
done
但不幸的是,我没有得到有关节点信息的任何内容。
我尝试过:
echo $hostSer | awk -F ':' '{print "$i"}' | awk -F '*' '{print $2}';
和
echo $hostSer | awk -F ':' '{print '\''"$i"'\''}' | awk -F '*' '{print $2}';
但都是错误的。谁能帮助我?
英文:
I have a linux script for selecting the node.
For example:
4
40*r13n15:40*r10n61:40*r11n18:40*r09n15
The correct result should be:
r13n15
r10n61
r11n18
r09n15
My linux script content is like:
hostNum=`bjobs -X -o "nexec_host" $1 | grep -v NEXEC`
hostSer=`bjobs -X -o "exec_host" $1 | grep -v EXEC`
echo $hostNum
echo $hostSer
for i in `seq 1 $hostNum`
do
echo $hostSer | awk -F ':' '{print '$i'}' | awk -F '*' '{print $2}'
done
But unlucky, I got nothing about node information.
I have tried:
echo $hostSer | awk -F ':' '{print "'$i'"}' | awk -F '*' '{print $2}'
and
echo $hostSer | awk -F ':' '{print '"$i"'}' | awk -F '*' '{print $2}'
But there are wrong. Who can give me a help?
答案1
得分: 3
通过将记录分隔符(`RS`)设置为`*:\n`,字符串被分割成单个标记,然后您可以只打印每2行(`NR%2==0`)。
英文:
One more awk:
$ echo "$variable" | awk 'NR%2==0' RS='[*:\n]'
r13n15
r10n61
r11n18
r09n15
By setting the record separtor(RS
) to *:\n
, the string is broken into individual tokens, after which you can just print every 2nd line(NR%2==0
).
答案2
得分: 2
你可以在awk中使用多个分隔符。请尝试以下:
h='40*r13n15:40*r10n61:40*r11n18:40*r09n15'
echo "$h" | awk -F '[:*]' '{ for (i=2; i<=NF; i+=2) print $i }'
**已根据RavinderSingh13的评论进行了编辑,使其更通用。
英文:
You can use multiple separators in awk. Please try below:
h='40*r13n15:40*r10n61:40*r11n18:40*r09n15'
echo "$h"| awk -F '[:*]' '{ for (i=2;i<=NF;i+=2) print $i }'
**edited to make it generic based on the comment from RavinderSingh13.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论