Bash: Путь или ссылка на строку в файле?

, если

./script 0001g.log 0002g.log 0003g.log > output

ур.

./script 0001g.log > output
./script 0002g.log >> output
./script 0003g.log >> output

, тогда вы можете использовать цикл или

`seq -f '%04gg.log' 10` | script > output
3
29.12.2016, 22:03
4 ответа

Вы можете создать файл с именем + view +1242 fname . Затем вызов vi или представление для этого файла:

view '+view +1242 fname'

откроет fname в представлении и поместит курсор в начало 1242 и строка (здесь предполагается реализация vim представления vi / view ).

Или выполните:

ln -s / '+view +1242 '

Итак, вы выполните:

view '+view +1242 /etc/passwd'

, чтобы просмотреть / etc / passwd в строке 1242.

Или:

touch '+exe "view +1242 \57etc\57passwd"'

И просмотреть , что с :

view '+exe "view +1242 \57etc\57passwd"'

Вы также можете сделать верхнюю строку целевого файла:

#! /usr/bin/less +1242

И сделать его исполняемым ( chmod + x fname ) и выполнить его, чтобы он открывался на меньше ] на линии 1242 и .

2
27.01.2020, 21:15

Ну, вы можете создать URI в локальном файле, например:

file:///home/user/filename

А затем вы можете вставить руководство # Part3:

file:///home/user/filename#Part3

но вы необходимо, чтобы файл находился в формате html , если браузер должен использоваться для чтения файла.


Тогда возникает реальный вопрос: какая программа (инструмент) должна читать (показывать) файл?

Ответ приведен выше, если вы ожидаете, что браузер прочитает его.

Если вы используете less (обычный читатель страниц руководства), вы можете направить less для перехода к определенной строке:

less +20 filename

Чтобы прочитать текстовый файл со строкой 20 в начале консоль.

Если бы вы могли изменить имя файла, включив в него требуемый номер строки.
Что-то вроде: filename-line-233 , это будет работать:

$ filename=A-text-file-line-233
$ less +"${filename##*-}" "$filename"

Могут быть другие инструменты, которые можно было бы адаптировать к этой идее.

1
27.01.2020, 21:15

С помощью уценки вы, кажется, можете ссылаться на строки в файле:

ссылка на github

0
27.01.2020, 21:15

Действительно, нет возможности установить ссылку на часть файла. Ссылки - это инструменты файлового уровня, они позволяют получить доступ к файлу только под определенным именем, они ничего не делают с содержимым файла.

Если вы хотите только читать из файла, вы можете использовать именованный канал :

mkfifo fname_line1242
while true; do sed -n '1242 { p; q; }' /path/to/fname >fname_line1242; done

, и тогда любой, кто прочитает fname_line1242 , получит строку 1242 из / путь / к / fname … если им повезет. Именованные каналы не имеют какой-либо формы синхронизации, поэтому это будет надежно работать только в том случае, если одновременно используется только один считыватель.

Чтобы эта работа работала с несколькими считывателями, вы можете использовать сокет и запустить socat для выполнения команды для создания контента каждый раз при чтении сокета.

socat -U UNIX-LISTEN:fname_line1242,unlink-early,fork EXEC:'sed -n -e 1242{ -e p -e q -e } /path/to/fname'

Если вы хотите, чтобы запись в файл заменяла строку в / path / to / fname , это возможно, но значительно сложнее. Вы можете использовать FUSE для создания пользовательских файловых систем, в которых такие операции, как открытие файла, чтение, запись и т. Д., Выполняют написанный вами код. Это требует значительных усилий, если только кто-то еще не написал файловую систему, которая делает то, что вы хотите.

2
27.01.2020, 21:15

Теги

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