如何使用bash将文件中的行数写入单独文件中的行

问题描述

我想计算一个文件中的行数,然后用行数覆盖第二个文件中的行数。例如

file1.txt

Apples
Oranges
Bananas

file2.txt

num_lines_in_file_1 = 100

所以我需要用3代替100

file2.txt

num_lines_in_file_1 = 3

我看到wc -l file1.txt命令可以告诉我行数。而且我知道我可以使用sed替换一行,例如

sed -i "s/num_lines_in_file_1 = 100/num_lines_in_file_1 = 3/" file2.txt

但是我不明白您将如何使用管道| sed中的wc命令?它会在正则表达式内发生吗?

解决方法

使用命令替换:

sed -i "s/num_lines_in_file_1 = 100/num_lines_in_file_1 = $(wc -l < file1.txt)/" file2.txt

您也不需要重复整个短语,sed可以为您记住它:

sed -i "s/\(num_lines_in_file_1 = \)100/\1$(wc -l < file1.txt)/" file2.txt