输出来自我从我们的netscaler运行的命令。它输出以下内容......需要注意的是,中间两个数字会改变,但偶数/奇数标准总是在最后一个数字上。我们永远不会超过2位数,所以我们永远不会达到10。
WC-01-WEB1
WC-01-WEB4
WC-01-WEB3
WC-01-WEB5
WC-01-WEB8
我需要填充一个名为“even”和“odds”的文件。如果我们正在处理数字,我可以弄明白,但在字符串中输入数字会让我失望。
示例代码,但我错过了我需要匹配字符串的部分。
if [ $even_servers -eq 0 ]
then
echo $line >> evenfile
else
echo $line >> oddfile
fi
答案 0 :(得分:1)
这是一个简单的awk
命令:
awk '/[02468]$/{print > "evenfile"}; /[13579]$/{print > "oddfile"}' input.txt
必须有更好的方法。
答案 1 :(得分:1)
这个版本怎么样:
for v in `cat <my_file>`; do export type=`echo $v | awk -F 'WEB' '{print $2%2}'`; if [ $type -eq 0 ]; then echo $v >> evenfile ; else echo $v >> oddfile; fi; done
我假设您的服务器列表存储在文件名<my_file>
中。基本思路是使用WEB
对awk
进行标记,并在WEB
之后处理字符以确定均匀性。知道后,我们export
变量type
的值,并使用它来选择性地转储到相应的文件。
对于名称是另一个命令的输出的情况:
export var=`<another command>`; export type=`echo $var | awk -F 'WEB' '{print $2%2}'`; if [ $type -eq 0 ]; then echo $var >> evenfile ; else echo $var >> oddfile; fi;
将<another command>
替换为perl脚本。
答案 2 :(得分:0)
总是grep是你的朋友:
grep "[2468]$" input_file > evenfile
grep "[^2468]$" input_file > oddfile
我希望这会有所帮助。