스프레드시트 스타일 작업에 awk 사용

스프레드시트 스타일 작업에 awk 사용

데이터 파일이 있습니다.

1
2
3
4

이제 첫 번째와 두 번째 숫자, 두 번째와 세 번째 숫자 등을 추가하고 데이터 파일을 받고 싶습니다.

1 
2 3
3 5
4 7

그런 다음 첫 번째 줄을 제거하여 다음을 얻습니다.

2 3
3 5
4 7

스프레드시트를 사용할 수도 있었지만 플로팅에는 gnuplot을 사용해야 합니다. 그래서 저는 이 작업에 정말로 awk를 사용하고 싶습니다.

답변1

이는 실제로 awk. 기본적으로 awk입력 파일을 읽고 각 줄에 지정한 스크립트를 적용합니다. 공백을 기준으로 줄을 분할하고(기본적으로 를 사용하여 다른 구분 기호를 선택할 수 있음 -F) 첫 번째 필드는 $1, 두 번째 필드는 $2등이 됩니다.

이를 염두에 두고 필요한 것은 i) 이전 행의 값을 변수에 저장하고 ii) 이전 값이 있는 경우(따라서 이것이 첫 번째 행이 아닌 경우) 현재 값을 인쇄하는 간단한 스크립트입니다. 첫 번째 필드에 마지막 행과 현재 첫 번째 필드를 더한 값입니다. 즉, 이는 다음과 같습니다.

$ awk '{if(last){print $1, $1+last;} last=$1}' file 
2 3
3 5
4 7

또는 동등하게

awk 'last != "" { print $1, $1 + last } { last = $1 }' file

또는,

awk 'NR > 1 { print $1, $1 + last } { last = $1 }' file

관련 정보