Unix, при обнаружении шаблона, нам нужно обнаружить соответствующий другой шаблон

[

] Это не ошибка [] bash[], так как [] POSIX[] допускает как [] bash[], так и [] ksh[] поведение, что приводит к неудачному расхождению, которое вы наблюдаете. [

] [

][] http://pubs.opengroup. org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_12[][

] [

][]Кроме того, каждая команда многокомандного конвейера находится в окружении подоболочки; однако, в качестве расширения, любая или все команды конвейера могут выполняться в текущем окружении. Все остальные команды должны выполняться в текущем окружении оболочки.[][

] [

]Однако, с []bash 4. 2[] и более новым, вы можете установить опцию []lastpipe[] в неинтерактивных скриптах для получения ожидаемого результата, например:[

] [

#!/bin/bash

echo 1 2 3 4 5 | read a b dump
echo before: $b $a 
shopt -s lastpipe
echo 1 2 3 4 5 | read a b dump
echo after: $b $a 

] [

]Output: [

] [

before:
after: 2 1

]

1
08.05.2015, 16:41
2 ответа

Вы можете сделать это с awk С чем-то вроде это:

 awk '/===/ {SEC=$0;PRINTED=0} /night/ {if(!PRINTED) print SEC; print $0; PRINTED=1;}' <file>

, который будет искать строку === и хранить это и обратите внимание, что она еще не напечатала этого. Тогда, если он находит шаблон ночь , он проверит, будет ли он напечатал ли он заголовок раздела или нет, распечатайте его, если нет, затем распечатайте текущую строку и отметьте, что она уже напечатала заголовок раздела.

2
27.01.2020, 23:37

Проблема заключалась в том, что вместо чтения manjaro wiki я следовал учебным пособиям в Интернете и youtube-видео.

Правильный способ - не устанавливать virtualbox virtualbox-host-modules , вместо этого сначала следует проверить версию ядра uname -r в моем случае я использую 3,16,7 .10-1-MANJARO , поэтому я должен сделать

sudo pacman -S linux316-virtualbox-host-modules

С течением времени блоги становятся все более популярными, они лучше ранжируются, оставляя официальную документацию позади, а такие пользователи, как я, получают ложную информацию. В любом случае, надеюсь, мой ответ поможет будущим пользователям.

-121--99066-

Операция переименования выполняется очень быстро в любой файловой системе, поэтому она вряд ли будет прервана, но в классической файловой системе она, безусловно, может быть прервана - если он сначала создает ссылку назначения, то может оставить две ссылки в файле - что является законным, но файл считает, что он имеет только один, что может вызвать проблемы, если он будет удален позже. С другой стороны, если сначала удалить исходную ссылку, файл может быть потерян. Выполнение команды fsck обычно обнаруживает и исправляет любое условие, хотя если файл потерян, он будет помещен в «lost + found» каталог с произвольным именем, а не в нужном расположении - и если он имеет две связи, счетчик ссылок будет просто обновлен, так что файл будет существовать в двух расположениях, если файловая система поддерживает это.

Если файловая система необходима для обеспечения надежности в случае сбоя питания, следует использовать файловую систему ведения журнала , например NTFS, EXT3 или XFS. В большинстве современных систем по умолчанию используется файловая система ведения журнала, хотя следует помнить, что FAT не является файловой системой ведения журнала, если она используется для внешних дисков.

Файловая система ведения журнала использует систему «двойной записи» - она записывает в файл журнала тот факт, что намерена его переместить, а затем выполняет перемещение. Когда файловая система будет проверена при запуске, если она была прервана, она заметит, что перемещение не было завершено, и повторит его тогда.

Существует два типа файловых систем ведения журнала - ведение журнала метаданных и полное ведение журнала. Ведение журнала метаданных означает, что он не отслеживает изменения содержимого файла в системе журналов (таким образом, вы можете потерять содержимое при записи в файл), но он по-прежнему будет треком важную информацию файловой системы, такую как содержимое каталога, свойства файла и т.д.


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


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

-121--32140-

Пробовали это с sed

sed -n '/===/{
h
d
}
/night/{
G
s/\(.*\)\n\(.*\)/\2\
\1/p
}' inputFile

Это не совсем то, что вы хотели, но довольно похоже.

=== file23.txt
night78
=== file23.txt
night
=== log3.c
night3
  • /= hold current образца в буфере
  • /night соответствует всем строкам, содержащим token night
  • G add current buffer to the current образца space.
  • /s поменять местами текущую строку шаблона и текущую строку буфера.
0
27.01.2020, 23:37

Теги

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