【发布时间】:2013-06-11 05:18:14
【问题描述】:
我有(比如说)100 行的“file1”。我想使用 sed 或 awk 将第 23、71 和 84 行(例如)打印到“file2”。这 3 个行号位于单独的文件“列表”中,每个数字位于单独的行中。
当我使用这些命令中的任何一个时,只会打印第 84 行:
for i in $(cat list); do sed -n "${i}p" file1 > file2; done
for i in $(cat list); do awk 'NR==x {print}' x=$i file1 > file2; done
可以以这种方式使用 for 循环为 sed 或 awk 提供行地址吗?
【问题讨论】:
-
是的,不要!!!请参阅@Jaypal 的答案,了解做你想做的事情的正确方法。
-
@Ed Norton - 我已经尝试了所有建议的解决方案,它们都有效。对于我的特定问题(与我发布的简化问题不同),理想的解决方案是 perreal 的。