bash 와 awk를 이용해서 특정 부분을 추출해서 저장할려면...

yuni의 이미지

현재 상황은 다음과 같습니다.
파일 A.inp에 첫번째 열에는 79부터 88번까지의 숫자가 반복이 됩니다. 두번째 세번째 네번째 열에 있는 숫자가 추출을 원하는 데이타입니다.

이것을 뽑아서 각각의 파일로 만들고 싶습니다. 만약에 79번을 만나면 B79.out이런 파일 형식으로 같은 행에 있던 두,세,네번째 데이타를 여기에다가 저장하고 싶군요.
이 일을 88번까지 반복하고 싶습니다.

문제점은 두가지인 것 같습니다. :roll:
일단 for 문이 돌지를 않습니다.
전혜진씨가 올린 베쉬 프로그래밍 입문 하우투를 보면

#!/bin/bash
for i in 'seq 1 10';
do
echo $i
done 

변수 i에 1 부터 10 까지 하나씩 들어가서 출력을 하는 것인 것 같은데 i에는 seq 1 10이 한번에 다 들어가 버립니다.

두번째 문제는 gawk문법인데,

gawk '{if ($1==79) print ($2,$3,$4)}' A.inp > B79.out

라도 해야 되는 것 같은데,
그러면 bash안에서는 79 대신에 $i 를 쓰고 나머지 $2, $3,$4는 어떻게 알려 줘야 될까요. 이것이 변수가 아니라 gawk 하에서는 2열, 3열, 4열을 의미한다는 것을 말입니다.

막 shell을 시작한 입장이라 개념 부터 문제일 수 있습니다.
어떤 답변도 초보자에겐 큰 도움이 될 것입니다.

dreampia의 이미지

#!/bin/bash 
for i in 'seq 1 10'; 
do 
echo $i 
done 

에서 'seq 1 10' 이 아니라 `seq 1 10`

tab key 위에 있는 역따움표를 써야 하구요..

awk 안에서 shell 변수를 사용하려면

'$i'

와 같이 쓰시면 됩니다.

>/dev/null 2>&1

yuni의 이미지

신의 손이 시군요. 덕분에 엄청 버벅거리다가 해법을 알게 되어 기쁩니다. :D

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

dangsan49의 이미지

seq 라는 명령어가 있는줄은 오늘 첨 알았군요.
전 이럴경우 다 쳤는데....하하

VENI, VIDI, VICI - Caesar, Gaius Julius -

aero의 이미지

표준 awk는 잘 모르겠으나
gawk 는 -v 옵션을 지원합니다.

gawk -v FOO=$VAR 어쩌고저쩌고~

하면 쉘환경변수 VAR값을 awk내부의 FOO 변수값으로 가져가서
쓸 수 있습니다.

넘기는 값이 여러값이라면 쉘스트립트로 적절히 루프 돌리면서
값을 넘겨 주면 되겠네요.

쿠크다스의 이미지

dangsan49 wrote:
seq 라는 명령어가 있는줄은 오늘 첨 알았군요.
전 이럴경우 다 쳤는데....하하

저는
yes "" | head -n456 | cat -n | sed -n -e '123,456p'

과자가 아닙니다.
cuckoo dozen, 즉.12마리의 뻐꾸기란 뜻입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.