我可以使用此cmd从文件中打印一系列行:
sed -n 267975,1000000p < dump-gq1-sample > dump267975
但如何打印到最后?我试过了
sed -n 267975,$p < dump-gq1-sample > dump267975
它给了我:
sed:1:“267975,”:预期的上下文地址
答案 0 :(得分:4)
sed -n 267975,$p < dump-gq1-sample > dump267975
由sed
收到
sed -n 267975, < dump-gq1-sample > dump267975
因为p
变量未定义。
您应该使用单引号'
sed -n '267975,$p' < dump-gq1-sample > dump267975
请参阅https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html有关现有shell扩展的完整列表。
答案 1 :(得分:2)
如果将范围的开始/结尾作为变量传递给sed,单引号响应将不起作用。
在我的系统上可以在单引号中在符号$和p之间包含一个空格,以防止$ p意外扩展
sed -n '267975,$ p' ${INPUT_FILE} > ${OUTPUT_FILE} #double quotes work here too
如果您需要将首行作为变量传递,则$ L1的扩展需要双引号,因此通常使用空格是个好主意:
L1=267975
sed -n "${L1},$ p" ${INPUT_FILE} > dump${L1}