如何使用shell脚本将可变数量的行从一个文件复制到另一个文件?

时间:2014-07-15 20:08:51

标签: linux shell

我有一个wpa_supplicant.conf文件(WiFi开发人员可能熟悉它)。我想在它的开头将可变数量的行复制到另一个文件。每个wpa_supplicant都具有以下格式:

ctrl_interface=wlan0
update_config=1
device_type=0-00000000-0

network={
..

在前几行后network={..部分开始,但它上面的行数是可变的。我不知道之前可能有多少行。有没有办法使用shell脚本将network{..之前的所有部分复制到另一个文件?

1 个答案:

答案 0 :(得分:2)

这是awk的经典用例:

awk '{ if ($0 ~ /network=\{/) { exit } print }' wpa_supplicant.conf > /some/file

复制本身很简单,只需通过简单的重定向>即可完成。 注意,这将覆盖/some/file。如果您想要附加到文件而不是覆盖它,请使用>>

更有趣的是第一部分,它由一个awk脚本组成,该脚本逐行读取并打印wpa_supplicant.conf,并在一行与正则表达式network=\{匹配时立即停止。 我不打算详细解释这个脚本是如何工作的 - 如果你不熟悉awk,你应该阅读它,因为当你不得不做这些事情时它经常会派上用场在时间限制下。