Как искать слово только в первой строке файла в unix - PullRequest
0 голосов
/ 02 августа 2020

Я хочу найти слово только в первой строке файла в unix, и если слово отсутствует, вставьте строку перед и в последнем файле

, например,

файл demo.txt содержит

Я что-то ищу

ABC DEF это демонстрационный файл

предположим, я хочу проверить первую строку, я ищу слово 'запрос 'здесь в этом файле запрос находится не в первой строке, поэтому должна быть добавлена ​​новая строка перед текущей строкой

demo.txt теперь должен содержать

добавленный запрос

Я ищу для чего-то

ABC DEF это демонстрационный файл

последний добавленный запрос

Выше мы видим, что первая и последняя строки добавлены любые предложения, я использовал sed

код: ["$ (sed -n '1p' demo.txt)" == "запрос"]

но указанный выше код не работает

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Это то, что вы хотите? Чтобы отредактировать файл, просто добавьте опцию -i. Только GNU sed.

$ cat demo.txt
I am looking for something
ABC DEF this is demo file

$ cat demo2.txt
Blah Blah request Blah
ABC DEF this is demo file

$ sed -n '1{/request/!{h;s/.*/added request/;p;x;}};p;${g;/added request/{s/.*/& last/p}}' demo.txt
added request
I am looking for something
ABC DEF this is demo file
added request last

$ sed -n '1{/request/!{h;s/.*/added request/;p;x;}};p;${g;/added request/{s/.*/& last/p}}' demo2.txt
Blah Blah request Blah
ABC DEF this is demo file
0 голосов
/ 03 августа 2020

Если вы хотите автоматизировать ed обработку файла в сценарии, ed часто является лучшим выбором, чем sed - особенно если вы хотите записать несколько вещей в несколько разных мест, так как это легко для перемещения курсора текущей строки в произвольные места. Пример:

$ cat demo.txt
I am looking for something
ABC DEF this is demo file
$ ed -s demo.txt <<'EOF'
1v/request/i\
added request\
.\
$a\
added request last\
.\
w
EOF
$ cat demo.txt
added request
I am looking for something
ABC DEF this is demo file
added request last

Перевод:

Если первая строка не содержит строки request (1v/request/), i nsert text перед первой строкой и a добавить текст после последней строки и, наконец, w записать измененный файл обратно на диск. Обратные косые черты в конце каждой строки, кроме последней, необходимы, чтобы рассматривать все это как единый список команд, переданных в v.

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