텍스트 파일에 동일한 번호의 열을 삽입하는 방법은 무엇입니까?

텍스트 파일에 동일한 번호의 열을 삽입하는 방법은 무엇입니까?

:::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

두 번째 열에 동일한 숫자를 추가하고 싶습니다. 루프에서 이 작업을 어떻게 수행합니까?

답변1

세 개의 중첩 루프가 필요합니다

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}, 이는 a두 번째 열에 표시하려는 변수이고 나머지 열은 모두 그대로 인쇄됩니다.

관련 정보