Ann*_*met 15 command-line text-processing
我有一个包含多个.txt
文件的目录。
从这些文件中的每一个中,我想选择第一行并将其打印到一个新.txt
文件中(以获取所有第一行的列表)。
我尝试使用awk
andsed
命令并将其与循环结合使用,但没有成功。
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)
使用grep
:
grep -m 1 '.' *.txt >output.file
Run Code Online (Sandbox Code Playgroud)
grep
将匹配任何字符并在第一次匹配后退出,即grep
输出所有输入文件的第一行,我们将它们保存在out.txt
.