[완료] Bash Shell에서 특정문자 연산하는 방법 문의

ansdusah의 이미지

안녕하세요, 눈팅만 매번 해오다가 처음으로 글을 올려보네요.
서론은 생략하고 본론부터 말씀드리겠습니다.
제가 궁금한 것은 아래와 같습니다.

135913.772,5546.0584,03737.4819
135914.776,5546.0563,03737.4908
135915.772,5546.0542,03737.4995
135916.772,5546.0519,03737.5082
135917.772,5546.0496,03737.5168
135918.772,5546.0472,03737.5253
...

이러한 문자열이 파일로 존재하는데 "," 문자를 기준으로 첫번째 수인 [0-9][0-9][0-9][0-9][0-9][0-9].[0-9][0-9][0-9] Format의 수를 반올림하여 [0-9][0-9][0-9][0-9][0-9][0-9] Format으로 대치하고 싶습니다.
제가 원하는 결과로 변환해보자면

135914,5546.0584,03737.4819
135915,5546.0563,03737.4908
135916,5546.0542,03737.4995
135917,5546.0519,03737.5082
135918,5546.0496,03737.5168
135919,5546.0472,03737.5253
...

이런 형식으로 변환하여 파일로 저장하고 싶습니다.
sed 명령을 통해 문자를 대치할 수는 있지만 위와 같이 연산은 불가하여 이렇게 문의를 구합니다.
방법이 없을까요?

ansdusah의 이미지

??

qiiiiiiiip의 이미지

sed로는 많이 어려울것 같네요. 능력자분이 계실지도 모르겠지만..
awk로 하는게 적당해 보입니다.

첫번재 컬럼이 [0-9][0-9][0-9][0-9][0-9][0-9].[0-9][0-9][0-9] Format 에 맞지 않으면 어떻게 출력하는 건가요?

포맷 신경쓰지 않고 무조건 첫번째 컬럼은 반올림하는것은 쉽습니다.

awk -F ',' 'BEGIN{OFS=",";} {printf int($1+0.5); $1=""; printf $0; printf "\n"}'your_file.txt

첫번째 컬럼이 포맷에 맞지 않는 경우 그 라인은 그대로 출력하는 스크립트는

awk -F ',' 'BEGIN{OFS=",";} {if ( /^[0-9]{6}\.[0-9]{3},/ ) {printf int($1+0.5); $1=""} printf("%s\n",$0)}'your_file.txt

ansdusah의 이미지

감사합니다. 덕분에 잘 해결했습니다.

ymir의 이미지

$ cat input.txt
135913.772,5546.0584,03737.4819
135914.776,5546.0563,03737.4908
135915.772,5546.0542,03737.4995
135916.772,5546.0519,03737.5082
135917.772,5546.0496,03737.5168
135918.772,5546.0472,03737.5253
$ cat input.txt | while read -r line; do IFS=,; set -a $line; printf "%.0f,%s,%s\n" $1 $2 $3; unset IFS; done
135914,5546.0584,03737.4819
135915,5546.0563,03737.4908
135916,5546.0542,03737.4995
135917,5546.0519,03737.5082
135918,5546.0496,03737.5168
135919,5546.0472,03737.5253

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

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