Автор Тема: Bash script за изрязване на N колона  (Прочетена 1093 пъти)

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Здравейте колеги,
Понеже много често ми се налага (всеки ден по много пъти :) ) да използвам awk '{print $N}' за какво ли не, искам да си го направя на скрипт примерно "kolona 2" = awk '{print $2}'.

Идеята ми беше за нещо такова:
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. kolonanomer=$1
  3. awk '{print $$kolonanomer}'

Разбира се този синтаксис е грешен, но не ми идва на ума, как да го направя. Който може, нека помогне.
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

sudo

  • Напреднали
  • *****
  • Публикации: 73
    • Профил
Re: Bash script за изрязване на N колона
« Отговор #1 -: Apr 05, 2018, 09:54 »
Пробвай с
Код
GeSHi (Bash):
  1. kolonanomer="\$1"
При мен това работи
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. kolonanomer="\$1"
  3. echo $kolonanomer
  4.  
srm@debian:~$ sh test.sh
$1
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script за изрязване на N колона
« Отговор #2 -: Apr 05, 2018, 10:06 »
$1 е първия подаден аргумент, за да може да се получи исканото "kolona 2" = awk '{print $2}'. Когато го ескейпнеш, го правиш стринг. Въпроса е, как да парсна на awk N като променлива, която да е първия подаден аргумент.
Код
GeSHi (Bash):
  1. awk '{print $--->N<---}'

Това което ми трябва е:
Код
GeSHi (Bash):
  1. > cat test.txt
  2. > 1 2 3
  3. > cat test.txt | awk '{print $3}'
  4. > 3
  5. > cat test.txt | kolona 3
  6. > 3

*където kolona е примерното име на скрипта, а 3 е подадения аргумент за номер на колоната
« Последна редакция: Apr 05, 2018, 10:15 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

sudo

  • Напреднали
  • *****
  • Публикации: 73
    • Профил
Re: Bash script за изрязване на N колона
« Отговор #3 -: Apr 05, 2018, 10:43 »
Може би ти трябва това:
Код
GeSHi (Bash):
  1. function kolona() { awk "{print \$${1:-1}}"; }
  2.  
  3. :~$ date | kolona 2
  4. апр
  5. :~$ date | kolona 3
  6. 5
  7.  
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script за изрязване на N колона
« Отговор #4 -: Apr 05, 2018, 10:50 »
Много благодаря, колега. Перфектно стана.

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. awk "{print \$${1:-1}}"
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH - Script
Общ форум
blind_fish 3 3860 Последна публикация Nov 04, 2002, 20:20
от
bash script
Хардуерни и софтуерни проблеми
flame 6 4031 Последна публикация Sep 02, 2004, 12:28
от mimosh
bash script
Общ форум
anger 4 3600 Последна публикация Mar 06, 2005, 20:01
от anger
Помощ за bash script
Хардуерни и софтуерни проблеми
Ivan_storm 4 3538 Последна публикация May 30, 2005, 12:31
от rpetrov
bash script за праверяване на процес
Общ форум
sys7em 8 4083 Последна публикация Aug 09, 2005, 15:39
от