我想: 1)从文件中提取一个整数N,该文件由特定的关键短语(例如, '无行' 另一个特定短语后 2)grep的N行,说: '从这里开始',即:grep从文件中抽出n行,n从同一文件中提取
输入文件
no of lines 8
.....
start from here
0.6250000000 1 O 1
0.8750000000 1 O 2
0.1250000000 1 O 3
0.3750000000 1 O 4
0.6250000000 1 O 5
0.8750000000 1 O 6
0.1250000000 1 O 7
0.3750000000 1 O 8
.....
输出:
start from here
0.6250000000 1 O 1
0.8750000000 1 O 2
0.1250000000 1 O 3
0.3750000000 1 O 4
0.6250000000 1 O 5
0.8750000000 1 O 6
0.1250000000 1 O 7
0.3750000000 1 O 8
思想像这样的事情会做:
N=`grep 'no of lines' file| tr -d A-Za-z' '`
grep -A $N 'start from here'
但显然grep不允许以这种方式传递参数。
感谢您的帮助。
PS。没有必要坚持grep。
更新: 我正在处理的文件实际上是一个DOS文件,我不知道。这造成了一切麻烦。所以实际上,所有提出的解决方案,包括我的(已更正):
tr -d '\r' <file> file_n
N=`grep 'no of lines' file_n| tr -d A-Za-z' '`
grep -A $N 'start from here' file_n
工作得很好。
你能提供一个样本输入和输出? – anubhava
你是否需要grep呢,还是打算使用Python或其他? –
''bash'在调用'grep'前用它的值替换'$ N',所以'grep'不知道正在使用一个变量。问题必须在于如何设置'N'的值。 – chepner