【发布时间】:2014-05-19 15:08:45
【问题描述】:
我即将解决这个问题,但我似乎碰壁了。我想搜索文件名,获取第 14 到 17 行的内容,然后将 /path/filename 和第 14 到 17 行的内容打印到输出文件,连接到同一行,用空格分隔。
所以在一个目录中包含:
/path1/filenameX.txt
line 14: 3
line 15: 4
line 16: 9
line 17: 5
和
/path2/filenameY.txt
line 14: 56
line 15: 10
line 16: 70
line 17: 89
我希望输出文件如下所示:
./path1/filenameX.txt 3 4 9 5
./path2/filenameY.txt 56 10 70 89
我一直在寻找这个问题的解决方案,到现在为止(很大程度上要感谢这个网站!)我已经解决了其中的各个部分,但让它们一起工作被证明是非常困难的。
下面是一个不太奏效的解决方案示例:
find . -name 'filename*' -print0 -exec cat {} \; | head -n 17 | tail -n 4 | tr '\n' ' ' > output.txt
当其他尝试获取包含在输出文件中的文件名而不是行的内容时,上面的这个得到了行的内容,而不是文件名,而且这个最新的只读取了一个文件。
sed、grep、awk、cat 或任何其他可以在命令行上工作的组合都可以,任何帮助都将不胜感激!
【问题讨论】: