我需要将服务器名称附加到与该服务器关联的每个用户条目的前面。下面是我正在处理的文件的一个例子:
<server_name>
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
<server_name>
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
我需要一个脚本来删除服务器名称并将其附加到用户条目的前面。所以文件最终看起来像这样:
<server_name_a>
<server_name_a>:at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
<server_name_a>:bin:x:1:1:bin:/bin:/bin/bash
<server_name_b>
<server_name_b>:at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
<server_name_b>:bin:x:1:1:bin:/bin:/bin/bash
答案 0 :(得分:2)
这是一个简单的awk
程序,应该按照您的描述进行操作:
awk '/^INFO/{prefix=$NF;next}{printf "%s:%s\n", prefix, $0}' < ${FILENAME} > ${OUTPUT}
答案 1 :(得分:1)
尝试这样的事情:
#!/bin/bash
cat $* | while read line
do
if echo $line | grep "^INFO:" > /dev/null
then
SERVER=`echo "$line" | sed -e 's/.*<\(.*\)>.*/\1/g'`
else
echo $SERVER:$line
fi
done