읽는 동안 linux 열 3이 열 2보다 작으면 열을 전환합니다.

읽는 동안 linux 열 3이 열 2보다 작으면 열을 전환합니다.

다음 항목이 포함된 탭으로 구분된 파일이 있습니다.

1 4 10 고양이

1 10 4 개

열 3이 열 2보다 작으면 다음과 같이 전환되도록 처리하고 싶습니다.

1 4 10 고양이

1 4 10 개

이 스크립트는 그것을 얻는 것 같지만 기준을 충족하지 않는 열만 출력하므로 출력은 다음과 같습니다.

1 4 10 고양이

while read field1 field2 field3 field4; do
  if [[ "$field2" -gt "$field3" ]] ; then 
      awk '{t=$field2; $field2=$field3; $field3=t; print; } '
  fi
done < filename.txt

제가 뭔가 어리석은 실수를 저질렀다는 것은 확실하지만 아직 한 번도 본 적이 없습니다.

답변1

awk '$3 < $2 { temp=$3; $3=$2; $2=temp } { print }' /path/to/file

관련 정보