如何从命令中的特定行开始使用文件作为程序的输入?

如何从命令中的特定行开始使用文件作为程序的输入?

要使用文件作为程序的输入,<可以使用运算符。

例如,

xmacroplay "$DISPLAY" < input.txt

但是,如果我不想使用整个文件,而只接受一些行作为输入,是否有命令可以指定?

有些人喜欢,

xmacroplay "$DISPLAY" < input.txt --starting_line=100 --ending_line=120

(这肯定行不通,只是想知道是否有这样的选择)

答案1

使用sed或其他工具过滤出特定行并将其传递给命令。例如,以下命令将仅将文件的第 10 行和第 13 行发送到xmacroplay

sed -n '10p; 13p' input.txt | xmacroplay "$DISPLAY" --starting_line=100 --ending_line=120

或者awk

awk 'NR == 10 || NR == 13' input.txt | xmacroplay "$DISPLAY" --starting_line=100 --ending_line=120

如果由于某种原因您不能使用管道,请使用进程替换:

xmacroplay "$DISPLAY" --starting_line=100 --ending_line=120 < <(sed -n '10p; 13p' input.txt)

相关内容