[완료] 파일을 읽어서 특정 행의 값을 추출하여 뺄셈 하는 쉘 스크립트?

ytt123의 이미지

0000768832
0002752704
0002734848
0012716992
0042699712
0162681856

위 파일을 읽어서 1행 빼기 2행, 2행 빼기 3행, 3행 빼기 4행.....을 수행하는 C 쉘 스크립트 도움 좀 부탁합니다.
앞에 0도 붙어 있고 해서 연산이 쉽지가 않네요.

감사합니다.

파이썬3의 이미지

설계만 참고하시어요~ 파이썬으로 일단 구현해봤습니다 ;;;
(파일로 첨부합니다)

[우분투 18.04 파여폭스 나비에서 적었어요~]

댓글 첨부 파일: 
첨부파일 크기
Image icon Screenshot from 2021-03-11 16-54-31.png358.33 KB
Anti-Lock의 이미지

_=[print(n[0]-n[1]) for n in zip(N[:-1],N[1:]) for N in [map(int,raw_data.split())]]

chanik의 이미지

awk로 하실 수 있겠네요.

$ cat sample.dat
0000768832
0002752704
0002734848
0012716992
0042699712
0162681856
$ cat sample.dat | awk '{if(prev){print prev-$1} prev=$1}'
-1983872
17856
-9982144
-29982720
-119982144

첫 컬럼이 숫자로 시작되는 줄에 대해서만 동작시킨다든지 하는 조건을 걸려면 아래와 같이 할 수도 있겠습니다.

$ cat sample.dat | awk '/^[0-9]+/{if(prev){print prev-$1} prev=$1}' 
chanik의 이미지

데이터가 0000000000 식으로 0 값을 가지면 오동작하네요.
아래와 같이 변수의 값이 아닌 길이를 확인하는 식으로 해야겠네요.

$ cat sample.dat | awk '{if(length(prev)){print prev-$1} prev=$1}'
ytt123의 이미지

깔끔하네요.
습득해서 잘 사용하겠습니다~~~

Anti-Lock의 이미지

.....을 수행하는 C 쉘 스크립트 도움 좀 부탁합니다.
앞에 0도 붙어 있고 해서 연산이 쉽지가 않네요.

그냥 쉘 스크립트가 아니라 'C 쉘 스크립트'로 제한 한 이유는는 모르겠지만,
awk 스크립트는 C 쉘 스크립트로 인정되는 부분인가요.
(이 정도는 이해가 가능한 부분?)

2가지 의문이 있습니다.(심각한건 아니고요...)
1. 실질적인 작업을 awk 나 seq 통해 수행하여도 쉘 스크립트 솔루션이라고 인정 되는가? 만일 그렇다면 파이썬 스크립트를 쉘파일에 임베딩?한 솔루션도 인정되는가. perl은? 뭘로 하든 'one-liner' 면 인정?
2. 그리하여 '일반적으로 말해서', '쉘 스크립트' 라는 것은 무엇을 의미하는가?

ytt123의 이미지

생각해보니 제가 그동안 습관적으로 사용했네요.

awk, sed, perl 같은 command line 명령어를 csh 문법으로 작성해서 실행하고 싶은 거예요.
파이선 스크립트가 들어가도 상관 없는 셈인데 단지 제가 익숙하지 않다는 거...

이럴 때 어떻게 표현하면 가장 정확 한건가요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.