앗

12개의 행과 3개의 열로 구성된 텍스트 파일이 여러 개 있습니다.

예:

2       6    0.74  
42      6    0.58  
80      6    0  
112     6    0.24  
132     6    1  
216     6    0.7  
342     6    0  
390     6    0.21  
432     6    0.56  
466     6    0.75  
524     6    0.6  
646     6    0.9 

모든 행의 세 번째 열의 모든 값을 1로 설정하고 싶습니다.

출력은 다음과 같아야 합니다.

2    6   1  
42   6   1  
80   6   1  
112  6   1  
132  6   1  
216  6   1  
342  6   1  
390  6   1  
432  6   1  
466  6   1  
524  6   1  
646  6   1  

이 문제를 해결할 수 있는 명령어를 아는 사람이 있나요?

답변1

awk '{print $1, $2, "1"}' inputfile

답변2

노력하다

 awk '{$3=1 ; print ;}' oldfile > newfile
  • $3 = 1세 번째 필드를 1로 설정

sed(여기서는 내부 편집 옵션이 sed있는 GNU 또는 busybox )-i

sed -i 's/[0-9.]*$/1/' file
  • [0-9.]*$0줄의 끝까지 9의 순서입니다 ..

sed (골프 4바이트)

sed -i 's/[^ ]*$/1/' file
  • [^ ]*$줄 끝까지 공백을 제외한 모든 문자.

답변3

예상 출력의 줄은 두 개의 공백 문자로 끝나는 것으로 나타나고 필드는 탭 문자와 공백 문자로 구분됩니다.

이것이 실제로 원하는 것이라면 다음을 수행해야 합니다.

awk -v 'OFS=\t ' '$3="1  "' < infile > outfile

또는 다음을 사용하여 sed:

tab=$(printf '\t')
sed "
  s/[[:blank:]]\{1,\}/$tab /g
  s/[^[:blank:]]\{1,\}[[:blank:]]*$/1  /
  s/^[[:blank:]]*//" < infile > outfile

답변4

이렇게 하면 작업이 수행됩니다.

cat textfiles | cut -d' ' -f-2 | sed 's/$/ 1/'

관련 정보