我想从一个特定文件中复制第30行,然后将其粘贴到另一个文件中的第30行。我无法手动执行此操作,因为文件太大(20 gb +)
我已经找到了如何将它附加到另一个文件的末尾:
awk 'NR==30' file1.txt >> file2.txt
如何指定file2的行?
答案 0 :(得分:1)
您无法使用该重定向机制。我可能会建议一个Perl脚本(或者awk,假设你已经使用了Awk),它只是读取一行,写入它,并在适当的位置滑入新行。
my $count = 0;
while (<INPUT>) {
print OUTPUT $_;
if ($count == 30) {
print OUTPUT $lineToBeInserted;
}
$count++;
}
请注意它不会将整个文件存储在内存中,而是一次只存储每行。
答案 1 :(得分:1)
使用awk
:
awk '
NR==30{line=$0;next}
NR==FNR{next}
FNR==30{$0=line}1
' file1 file2 > tmp && mv tmp file2
答案 2 :(得分:0)
使用sed:
sed -i "30i $(sed -n '30p' file1.txt)" file2.txt
内部命令从file1.txt
中提取第30行target_line=$(sed -n '30p' file1)
外部命令将该文本插入file2.txt的第30行
sed -i "30i $target_line" file2.txt