У меня есть текстовый файл 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
Как мне завершить мой код для работы, как описано выше?
Вы могли возможно справиться как это:
#!/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
печатный