加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash上垂直翻转多个字符串

发布时间:2020-12-15 21:19:12 所属栏目:安全 来源:网络整理
导读:我试图垂直翻转任何句子的内容.因此,任何字符串的每个字符都将在同一行中垂直打印.例如: Sample Text: This is an ExampleOutput expected: T i a E h s n x i a s m p l e 在以下方向,我试图实现这一目标,但尚未能够实现. echo "Input provided by user is
我试图垂直翻转任何句子的内容.因此,任何字符串的每个字符都将在同一行中垂直打印.例如:

Sample Text: This is an Example

Output expected: T i a E
                 h s n x
                 i     a
                 s     m
                       p
                       l 
                       e

在以下方向,我试图实现这一目标,但尚未能够实现.

echo "Input provided by user is $@"
    for i in $(seq 1 $#); do

        echo ${!i} | sed 's/./ &/g' | xargs |tr ' ' 'n' 

        done


Current output:

T
h
i
s
i
s
a
n
E
x
a
m
p
l
e

此外,这也没有帮助

echo Print text vertically | fold -c -w1
T
h
i
s

i
s

a
n

E
x
a
m
p
l
e

更多替代方案没有奏效:

#echo "Input provided by user is $@"

for i in $(seq 1 $#); do

content[i]=$(echo ${!i}|fold -c -w1)

   #echo ${content[i]}


    done

    echo ${content[@]}

解决方法

max变量保存所有单词的最大长度.对于你的文本,它将是:length(‘Example’)是7(所有单词的长度中的最大值)

使用awk脚本文件:

$awk -f script.awk <<< "This is an Example"
TiaE
hsnx
i  a
s  m
   p
   l
   e

以下是脚本:

{
        max=0
        for(i=1;i<=NF;i++)
                max=length($i)>max?length($i):max;

        for(j=1;j<=max;j++)
        {
                for(i=1;i<=NF;i++)
                {
                        temp=substr($i,j,1);
                        printf temp==""?" ":temp
                }
                printf "n"
        }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读