? Просто используйте awk, у него есть меньше предостережений
linenumber=$(awk -v p="$player" '$0 ~ p { print NR }' "$outputfile")
awk -v n="$linenumber" 'NR == n { sub(/2013-08-25/,"test") }1' "$outputfile"
и, конечно, вам не нужно несколько шагов:
awk -v p="$player" '$0 ~ p{ sub(/2013-08-25/,"test") }1' "$outputfile"
Чтобы написать вывод обратно на ваш входной файл:
awk 'script' "$outputfile" > tmp && mv tmp "$outputfile"
выше делает то же самое СЭД делает, это просто, что вы задаете файл tmp вместо sed подходит к вам. Если вы предпочитаете использовать awk для этого, то с последними версиями gawk вы можете сделать:
awk -i inedit 'script' "$outputfile"
Что бы ни было. Не стоит отказываться от простоты и функциональности awk, чтобы избежать тривиальности создания собственного файла tmp.
Единственное, что это не написать над моим выходным файлом. мой выходной_файл: Fenlig 2013-08-25 1:21:20 Liber8or 2013-08-25 1:26:00 Когда я запустить команду он просто просто выводит все это, но не пишет .. Fenlig 2013-08-25 01:21:20 Тест Liber8or 01:26:00 Мне нужно просто отредактировать определенную дату в моем файле, поэтому я использовал sed. –
Я только что обновил свой ответ, чтобы показать вам, как записать вывод обратно в ваш входной файл. –