sat*_*gie 2 linux bash awk sed
下面是文件的一部分,其中列出了以空白换行符分隔的zimbra帐户(500+)
cn: Jack
displayName: Jack Johnson
givenName: Jack
sn: johnson
zimbraMailDeliveryAddress: Jack@example.com
cn: james ryan
displayName: James Ryan
givenName: James
sn: Ryan
zimbraMailDeliveryAddress: James@example.com
....
Run Code Online (Sandbox Code Playgroud)
我想让文件包含如下内容,以便我可以使用它将它们导入新服务器 zmprove
cn: Jack displayName: Jack Johnson givenName: Jack sn: johnson zimbraMailDeliveryAddress: Jack@example.com
cn: james ryan displayName: James Ryan givenName: James sn: Ryan zimbraMailDeliveryAddress: James@example.com
Run Code Online (Sandbox Code Playgroud)
我尝试编写脚本而不删除新行,但到目前为止无法提取
for line in `cat /tmp/account3.txt`;
do
echo $line | grep "zimbraMailDeliveryAddress:" > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
email=`echo $line | cut -d' ' -f2` > /dev/null
continue
elif echo $line | grep "sn:" > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
sn=`echo $line | awk '{ print $2; }'` > /dev/null
continue
elif echo $line | grep "givenName:" > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
givenName=`echo $line | awk '{ print $2; }'` > /dev/null
continue
elif echo $line | grep "displayName:" > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
displayName=`echo $line | awk '{ print $2; }'` > /dev/null
continue
elif echo $line | grep "cn:" > /dev/null
RESULT=$?
if [ $RESULT -eq 0 ]; then
cn=`echo $line | cut -d' ' -f2` > /dev/null
continue
fi
else
:
fi
echo $email $sn $cn $displayName $givenName
done
# awk '/cn:|displayName:|givenName:|sn:|zimbraMailDeliveryAddress:/{printf "%s ", $0; next} 1' /tmp/account2.txt
Run Code Online (Sandbox Code Playgroud)
$ awk -v RS= '{$1=$1}1' file
cn: Jack displayName: Jack Johnson givenName: Jack sn: johnson zimbraMailDeliveryAddress: Jack@example.com
cn: james ryan displayName: James Ryan givenName: James sn: Ryan zimbraMailDeliveryAddress: James@example.com
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
88 次 |
最近记录: |