2013-01-23 37 views
3

我有一个小脚本的小问题。该文本文件有很多类似的条目:如何删除bash脚本中的换行符?

permission-project1-admin 
permission-project2-admin 
.... 

剧本是这样的(事实上,这是一个可怕的一个,但仍然帮助我):

#!/bin/bash 
for i in $(cat adminpermission.txt); do 
    permission=$(echo $i | cut -f1) 

printf "dn:$permission,ou=groups,dc=domain,dc=com \n" 
printf "objectclass: groupOfUniqueNames \n" 
printf "objectclass: top \n" 
printf "description: \n" 
printf "cn:$permission \n\n" 
done 

输出看起来不错,但由于文本文件已在最后一个换行符,printf的第一线分为两条线路,如:

dn:permission-project1-admin 
,ou=groups,dc=domain,dc=com 
objectclass: groupOfUniqueNames 
objectclass: top 
description: 
cn:permission-project1-admin 

我的问题是,我怎么能消除前两行间的换行符?

+0

'echo -n'省略了后面的换行符。 – Perleone

回答

2

尝试:

$(echo $i | tr -d "\n" | cut -f1) 
+0

这行代码不适合我。输出与上述相同。但非常感谢提示。 – user2005580

0

你有你的,如果你adminpermission.txt包含DOS风格的回车检查?您的代码将剥离换行符,但取决于您如何查看输出,回车符可能会像您所描述的那样破坏行。

您可以尝试

mv adminpermission.txt backup.txt 
tr -d '\r' <backup.txt> adminpermission.txt 

转换为UNIX EOL,然后再次运行你的脚本。

+0

这对我有用。 adminpermission文件包含DOS样式的运输。将文件转换为UNIX EOL后,它工作正常。非常感谢。 – user2005580

+0

太棒了!请确保通过点击旁边的复选框将答案标记为已接受,以奖励积分并帮助人们在将来找到正确的答案。 –