прочитать файл, содержащий Значения в шестнадцатеричном формате и обработать их

Это не команда sed внутри sed , это просто замена, которую ваша оболочка делает перед вызовом sed . Просто используйте правильные кавычки и круглые скобки, и все готово:

sed -i.bak -e "$(sed -n 1,1p file.txt),\$d" output.file

Двойные кавычки позволяют выполнять замену внутри процесса (одинарные кавычки - нет), а синтаксис $ () означает, что результатом внутренней команды является захватили и подставили. Обратите внимание, что \ $ нужно было экранировать, чтобы предотвратить интерпретацию $ d как переменной.

Менее запутанный способ записать то же самое было бы

n=$(sed -n 1,1p file.txt)
sed -i.bak -e "${n}\$d" output.file

Вы также можете написать это как "$ {n}" ', $ d' , в bash вы может объединять строки с разными кавычками (включая строки без кавычек), просто помещая их одну рядом с другой.

Также вы можете написать sed -n '1 {p; q}' file.txt . Прежде всего, вам не нужно писать диапазон, если вы указываете только один номер строки. Во-вторых, если вы завершите работу после печати первой строки ( q ), он не прочитает весь файл без причины - более эффективно. Поскольку это первая строка, -n также можно опустить. Или вы можете использовать head -n1 file.txt .

1
26.11.2017, 14:53
0 ответов

Теги

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