我想从文件中提取具有特定行号的行(我有大约20-50行号,文件有30,000行)。到目前为止,我发现最简洁的方法就是这样:
gawk 'BEGIN {split("13193,15791,16891", A, ",")} NR in A' <file_name>
但似乎我应该能够进一步减少所涉及的打字数量。我查看了sed
,但我认为每个行号都需要-n
和-p
,同时考虑cat -n
和grep
,但它更多比上面详细。有谁知道更好的方法吗?
答案 0 :(得分:9)
Sed可以更简洁:
sed -n "13193p;15791p;16891p" file_name
答案 1 :(得分:4)
将行号列表放在单独的文件中,然后
gawk 'FNR==NR {line[$1]; next} NR in line' line_numbers file_name
答案 2 :(得分:0)
这可能适合你(GNU sed?):
sed 's/$/p/' file_of_line_numbers | sed -nf - source