sed を使用して b の前に a をバブリングします。

sed を使用して b の前に a をバブリングします。

aとbのみを含むファイルがあります。

aaaaaaaaaaaaaabbbbbb
abababaaaabbbaabababa
bbbbbaaaaaa
aaabbbabbbaaaabbaba
abababbabbababbbabbab
abababbababaabaaabbababbaba
bababbbababba

私は次のようにsedを使用してbの前にすべてのaをソートしたいと思います。

    aaaaaaaaaaaaaabbbbbb
    aaaaaaaaaaaabbbbbbbbb
    aaaaaabbbbb
    aaaaaaaaaabbbbbbbbb
    aaaaaaaabbbbbbbbbbbbb
    ...

このスクリプトを作成しようとしています。

for row in $(sed -n 'p' $1)
do
    for k in $(seq $((${#row}-2)))
    do
        for j in $(seq $((${#row}-k-1)))
        do
           if [[  "${row:$j:1}" == a  &&  "${row:$j+1:1}" == b ]]; then
               sed -e  "s/./a/$j+1/p" $row  >> out.txt
           fi
        done
    done
done

しかし、それはうまくいかず、実際にそれを動作させる方法を知りません。しかし、このスクリプトを書いた後、sedタグを使用する方が簡単かもしれません。

しかし、「a」が「b」の前にあることを確認するために、sedでテスト条件を設定する方法、またはsedでループ数を設定する方法は何ですか?

ベストアンサー1

test.txtというファイルを作成し、次のコマンドを実行しました。

sed -e ':loop' -e 's/ba/ab/' -e 't loop' test.txt

おすすめ記事