逐个字符逐行循环

时间:2018-10-02 18:45:10

标签: bash shell for-loop unix

我试图将一系列字母视为数组,以便逐行,逐元素地循环遍历for循环中的每个字母。

提取列后,我的$data类似于:

ACACACACACA
CGCGCGCGGGG
TATATATAAAA
GAGAAAGAAGG
TGGTTTTGGTG

我的脚本:

for j in `cat $data` # go line by line
do
    for k in "${j[@]}" # go through each letter element by element
    do
        echo $k
    done
done

给出输出:

ACACACACACA
CGCGCGCGGGG
TATATATAAAA
...

我希望输出看起来像这样:

A
C
A
C
A
C
...
G
T
G

我的语法有问题吗?还是有更好的方法来调用该行的每个元素?

3 个答案:

答案 0 :(得分:1)

假设它始终是大写字母:

$ sed 's/[A-Z]/&\n/g' inputFile

或使用以下命令将任何字符和数字替换为具有相同字符或数字的后跟换行符。

$ sed 's/./&\n/g' inputFile

或者如果您有fold可用,

$ fold -w1 inputFile

fold换行。使用-w1选项,它可以绕成固定宽度1

答案 1 :(得分:1)

这不是纯粹的bash,但这可以使您获得所要得到的东西:

for j in `echo $data | grep -o .`
do
  echo $j
done

grep命令匹配每个单个字符并将其打印出来(或在这种情况下,将其存储在变量j中,我认为您打算做的事情不仅仅只是回显它)。

答案 2 :(得分:1)

最短的选项:

<input appCurrency data-isfocused="false" type="text" class="form-control number" formControlName="myInput" />