Как искать и вырезать строки из файла? [closed]

Я пытаюсь написать программу с такими параметрами и аргументами:

./program.sh -f <filename> -string <string>

Программа должна выводить строку , которая начинается с вот так:

 grep ^<string> <filename> 

Плюс он должен возвращать некоторую информацию, связанную со строкой, например имя и возраст в следующем примере входного файла:

string name age sex
Akdk john 22 male
Jrtkfp miah 26 female

Как я могу добиться такого поведения?

2
задан 12 October 2017 в 15:46

1 ответ

Операция настолько проста, насколько это возможно, с помощью oneliner, для этого вам не нужен целый скрипт. Я бы пошел с функцией, которую вы можете поместить в ваш файл ~/.bash_aliases, чтобы он загружался в каждый открытый вами терминал.

function_name(){ awk /^$2/'{print $1": "$2", "$3}' $1 ;}

Это позволяет вам позвонить function_name <filename> <string> и получить результат, как показано ниже:

$ cat test
string name age sex
Akdk john 22 male
Jrtkfp miah 26 female

$ function_name test Akdk
Akdk: john, 22

Как видите, вы можете достичь этой цели без каких-либо опций, используя только аргументы. проще. Если вам как-то нужны варианты, я рекомендую этот учебник и эту статью .

Пояснения

  • function_name(){ … ;} - определяет функцию function_name, которая выполняет
  • awk /^$2/'{…}' $1 - в файле, заданном в качестве первого аргумента функции ( $1) найти строки, начинающиеся (^) со второго аргумента ($2) функции, и выполнить с ней
  • awk '{print $1": "$2", "$3}' - напечатать первый столбец (пробел) разделенный), затем «:», затем второй столбец, затем «,» и затем третий столбец

Примечание: например, $1 имеет другое значение для bash (который управляет вашим терминалом), как для awk: первый расширяет его до первого аргумента, который вы ему дали, второй интерпретирует его как ярлык для первого столбца. Вот почему нам нужны одинарные кавычки (') вокруг команды awk print, поэтому bash не раскрывает $1, но позволяет нетронутому для awk разбирать его.

0
ответ дан 12 October 2017 в 15:46

Другие вопросы по тегам:

Похожие вопросы: