Как напечатать число из определенной строки и столбца - PullRequest
0 голосов
/ 23 мая 2019

У меня есть файл матрицы 4x2:

204 4
504 7
204 5
404 8

У меня также есть 4 файла с именами «204», «504», «204» и «404». Итак, я хочу напечатать номер 2-го столбца в файле внутри соответствующего каталога.

Я хочу создать файл, содержащий «4» внутри каталога «204» и т. Д.

Ответы [ 3 ]

0 голосов
/ 23 мая 2019

3 способа

Заменить LINE_NUMBER и COL_NUMBER на 1, 2, 3 ...

awk:

$>awk '{if(NR==LINE_NUMBER) print $COL_NUMBER}' file.txt.

sed:

$>sed -n LINE_NUMBER  file.txt | cut -d " " -f COL_NUMBER

голова и хвост:

$>head -n LINE_NUMBER file.txt | tail -n + LINE_NUMBER | cut -d " " -f COL_NUMBER
0 голосов
/ 23 мая 2019

Сохраните вашу матрицу в файле с именем file.txt

▶ ll
total 8
-rw-r--r--  1 noskillguy  staff    24B May 23 23:41 file.txt
▶ cat file.txt
204 4
504 7
204 5
404 8

Выполните приведенную ниже команду, для которой будет введен указанный выше файл

▶ while read p; do declare -a arr=(`echo $p`); mkdir -p ${arr[1]}; echo ${arr[2]} > ${arr[1]}/${arr[2]}.txt ; done < file.txt
▶ tree
.
├── 204
│   ├── 4.txt
│   └── 5.txt
├── 404
│   └── 8.txt
├── 504
│   └── 7.txt
└── file.txt

3 directories, 5 files
▶ tail */*
==> 204/4.txt <==
4

==> 204/5.txt <==
5

==> 404/8.txt <==
8

==> 504/7.txt <==
7

Я читаю file.txt построчно, а затем создаю массив для каждой строки declare -a arr=(`echo $p`), а затем использую первый объект массива для создания каталога mkdir -p ${arr[1]} и второй объект для создания файла и его содержимого echo ${arr[2]} > ${arr[1]}/${arr[2]}.txt

0 голосов
/ 23 мая 2019

cut -d позволяет указать разделитель, например, пробел. Вы можете использовать это для анализа содержимого вашего файла (из команды cat).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...