在shell脚本中打印用特殊字符分隔的单词
shell脚本以不同的方式打印三个单词我已经尝试过了在shell脚本中打印用特殊字符分隔的单词,shell,Shell,shell脚本以不同的方式打印三个单词我已经尝试过了 { a="Uname/pass@last" echo $a | tr "/" "\n" | tr "@" "\n" output is: Uname pass last } 我想把它当作 {Username- Uname Password- pass lastname-last} 好的,我想您应该为每个结果添加一个前缀: printf 'Username\nPassword\nlastname' > /tmp/prefixes
{
a="Uname/pass@last"
echo $a | tr "/" "\n" | tr "@" "\n"
output is:
Uname
pass
last
}
我想把它当作
{Username- Uname
Password- pass
lastname-last}
好的,我想您应该为每个结果添加一个前缀:
printf 'Username\nPassword\nlastname' > /tmp/prefixes
a="Uname/pass@last"
echo "${a}" | tr '/@' '\n\n' | paste -d':' /tmp/prefixes -
ie:将/tmp/前缀
的输出和标准输入(-
)的输出粘贴在一起,标准输入接收的输出为:echo“....…@…”tr'/@'\n\n'
(在生成的输出中,在本例中,用:
或您想要的任何东西将2分开。例如:-
,就像您的问题一样。)
它输出:
Username:user
Password:pass
lastname:last
(我知道你想要一个
-
而不是:
,但我举了一个:
的例子,以更好地将“-”表示标准输入,和“:”表示输出中的字段分隔符。只需将-d':“
更改为-d'-”
以有一个-
。首先,我希望您不会在shell脚本和外部命令中操纵重要的密码。这涉及到一些风险
定义问题 我怀疑您想要将一个编码用户用户名、密码和姓氏的字符串拆分为三行结构,在文档中添加标记。因此,
tr
是不够的
但是,它可以在外壳内完成
示例(bash、ksh):
此函数将提取第一个/
和最后一个@
之间的所有令牌作为密码值。如果其中一个丢失,它将不打印任何内容,并返回错误状态
运行时,这将提供:
{Username-USER_A
Password-seKreT
lastname-John.Doe}
使用这个简单的脚本并获得输出
#!/bin/bash
a="Uname/pass@last"
array2=(`echo $a | tr "/" "\n" | tr "@" "\n"`)
array1=(`echo -e "Username\nPassword\nlastname"`)
i=${#array1[@]}
for (( j=0 ; j<$i ; j++ ))
do
echo "${array1[$j]}=${array2[$j]}"
done
#/bin/bash
a=“联埃特派团/pass@last"
array2=(`echo$a|tr”/“\n”|tr@“\n”`)
array1=(`echo-e“Username\n密码\n lastname”`)
i=${#数组1[@]}
对于((j=0;jI)需要不同行中的结果
#!/bin/bash
a="Uname/pass@last"
array2=(`echo $a | tr "/" "\n" | tr "@" "\n"`)
array1=(`echo -e "Username\nPassword\nlastname"`)
i=${#array1[@]}
for (( j=0 ; j<$i ; j++ ))
do
echo "${array1[$j]}=${array2[$j]}"
done