如何从目录中的每个文件中选择第一行并将其打印到新的文本文件中

Ann*_*met 15 command-line text-processing

我有一个包含多个.txt文件的目录。

从这些文件中的每一个中,我想选择第一行并将其打印到一个新.txt文件中(以获取所有第一行的列表)。

我尝试使用awkandsed命令并将其与循环结合使用,但没有成功。

cho*_*oba 26

使用head

head -n1 -q *.txt > new-file
Run Code Online (Sandbox Code Playgroud)
  • -n1告诉head只提取第一行。
  • -q 告诉 head 不要打印文件名。

在 OS X(可能还有其他一些 *nix 变体)上,该-q选项不受head. 您需要自己删除文件名,例如

head -n1 *.txt | grep -v '==> ' > new-file
Run Code Online (Sandbox Code Playgroud)

这仅在您知道输出不应包含==> 字符串时才有效。绝对确定,使用循环(这将比只运行head一次慢得多):

for file in *.txt ; do
    head -n1 "$file"
done
Run Code Online (Sandbox Code Playgroud)


hee*_*ayl 9

使用grep

grep -m 1 '.' *.txt >output.file
Run Code Online (Sandbox Code Playgroud)

grep将匹配任何字符并在第一次匹配后退出,即grep输出所有输入文件的第一行,我们将它们保存在out.txt.