我在用户名中有一个sample.txt文件:名字:姓氏:电话号码格式(有几行,我想创建一个脚本,将每一行转换为这种格式:
uid: Username
cn: LastnameFirstname
sn: Firstname
tel:Telephone number
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经设法创建了citire函数,只有在sample.txt有一行时才能读取和打印OK.
citire () {
uid=$1
l=$2
while read -r line
do
name=$line
if [ -z "$3" ]
then
echo -e "$uid:`echo $name|awk -F ":" '{print $"'$l'"}'`"
else
l2=$3
echo -e "$uid: `echo $name|awk -F ":" '{print $"'$l'" $"'$l2'"}'`"
fi
done < /home/alexandrumohora/teste/sample.txt
}
citire uid 1
citire cn 3 2
citire sn 2
citire tel 4
Run Code Online (Sandbox Code Playgroud)
你能否告诉我应该修改什么才能让它一次打印每条记录(文件行)?
谢谢!
所以你基本上想要这样的东西没有bash:
gawk 'BEGIN {FS=":"}
{ print "uid:" $1
print " cn:" $3, $2
print " sn:" $2
print "tel:" $4
}' INPUTFILE
Run Code Online (Sandbox Code Playgroud)
编辑:也看到我的答案下面的评论正确的解决方案,信用他们!
最短的解决方案可能是:
awk -F: { printf "uid: %s\n cn: %s %s\n sn: %s\ntel: %s\n", $1, $3, $2, $3, $4 } INPUTFILE
Run Code Online (Sandbox Code Playgroud)