作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试获取目录中的文件名列表和每个文件的第一行文本,并将每一对输出到一行以输出到 .csv 文件。
我已经尝试了很多不同的方法来使用 head、ls、find 和 grep 以及这些方法的组合,但似乎无法将结果打印到一行中。我最接近的是让他们在不同的行上打印。
这是我需要的输出示例:
filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"
我真的不关心结果中是否有额外的字符或任何内容,因为一旦我将它们放在同一行,我就可以在 Excel 中轻松地对其进行编辑。
如有任何帮助,我们将不胜感激。
最佳答案
要获取目录中所有文件的文件名和第一行,请尝试:
awk '{print FILENAME" \"" $0"\""; nextfile}' *
要获取名称以 328 开头的所有文件的文件名和第一行,请尝试:
awk '{print FILENAME" \"" $0"\""; nextfile}' 328*
考虑一个包含这两个文件的目录:
$ cat filename1.txt
this is the first line of text
2
3
$ cat filename2.txt
this is the first line of text
b
c
现在,运行我们的命令:
$ awk '{print FILENAME" \"" $0"\""; nextfile}' *
filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"
`awk '{...}' *
这将启动 awk
并运行大括号内的命令。使用 glob *
,这将针对所有文件运行。例如,glob 可以限制为 328*.txt
,以处理名称以 328
开头并以 .txt
结尾的所有文件.
默认情况下,awk 将依次为每个文件一次读取一行。
打印文件名"\""$0"\""
这告诉 awk 打印文件名,后面是 "
,然后是第一行 $0
,然后是另一个 "
。
下一个文件
因为我们没有兴趣阅读第二行,所以这告诉 awk 跳到下一个文件。
我们可以将第一行保存到这样的文件中:
$ awk '{print FILENAME" \"" $0"\""; nextfile}' *.txt >output.txt
output.txt
文件如下所示:
$ cat output.txt
filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"
关于linux - 有没有办法在 Linux 中获取文件名列表和在同一行列出的第一行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55410624/
我是一名优秀的程序员,十分优秀!