Получить конкретные данные в табличном формате, используя скрипт bash

У меня есть текстовый файл test.txt с таким содержанием:

a:b:c:u
e:f:g:h
i:j:k:l
m:n:v:w
q:r:s:t

Я хочу создать скрипт bash, который будет вырезать данные из текстовых файлов, например, так:

./run.sh test.txt 3 2 5 3

j:k
n:v
r:s

Первый параметр - это местоположение файла, второй - это первая строка, которую я хочу, третий - столбец этой строки, четвертый - последняя строка и последний параметр - столбец этой строки.

Я начал работать над этим сценарием, но застрял.

Вот мой код:

#!/bin/bash
if [ ! -f $1 ]; then
    echo "The first parameter doesn't exist."
    exit 2
elif [ "$#" -ne 5 ]; then
    echo "Given parameter is less than five."
    exit 1
else
    i=0
    while read line; do
        test $((++i)) = $2 && cut -d':' -f$3
    done
fi

Как мне завершить мой код для работы, как описано выше?

2
задан 7 April 2017 в 00:32

1 ответ

Вы могли возможно справиться как это:

#!/bin/bash
if [[ ! -f "$1" ]]; then
  echo "oops, no such file"
  exit 1
elif [[ $# -lt 5 ]]; then
  echo "oops, not enough params"
  exit 2
fi
sed -n "$2,$4p" "$1" | cut -d ':' -f$3-$5

Примечания

  • sed -n звонить sed в тихом режиме - никакая печать, пока мы не просим что-то
  • "$2,$4p" "$1" строки печати от $2 до $4 включительно в файле $1
  • | cut -d ':' -f$3-$5 поля печати $3 кому: $5 включительно, от что sed печатный
3
ответ дан 2 December 2019 в 02:47

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

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