テキストファイルに同じ番号の列を挿入する方法は?

テキストファイルに同じ番号の列を挿入する方法は?

:::a.txt などの入力ファイルがあります。

1  0.4 0.8
2  0.5 3.0
5  0.8 3.5

次の出力が必要です:::1.txt

1 3 0.4 0.8
2 3 0.5 3.0
5 3 0.8 3.5

1 8 0.4 0.8
2 8 0.5 3.0
5 8 0.8 3.5

2番目の列に同じ数字を追加したいです。ループでこれを行うにはどうすればよいですか?

答え1

3つのネストループが必要です

for n in 3 8 ; do
    while read -a cols ; do
        printf '%s %s' "${cols[0]}" $n
        for ((i=1; i<=${#cols[@]}; i++)) ; do
            printf ' %s' "${cols[i]}"
        done
        echo
    done <a.txt
    echo
done > 2.txt

sed を使用することもできます。

for n in 3 8 ; do
    sed "s/ / $n /" a.txt
    echo
done > 1.txt

答え2

awk以下を使用して予想される出力を取得することもできます。

for i in {3,8}; do awk -v a=$i '{print $1,a,$2,$3}' a.txt; echo "" ; done >  1.txt

説明する:

この-vオプション(var=value)は、awkに変数を渡すために使用されます。

print {$1,a,$2,$3}、これはa2番目の列に表示したい変数で、残りの列はすべてそのまま印刷されます。

関連情報