데이터 파일이 있습니다.
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