1,motivation:
需要将多个零散的统一格式文件中一行抽取出来(ex:所有文件第三行都是描述url信息)
2,trial
使用sed -n ‘3p’ * 发现 只能打印出一行,多次实验后不明原因之后放弃,改用shell脚本
#!/bin/bash for file in `ls ./` do echo $file if [[ $file == std* ]] then sed -n '3p' $file >> tmp1 fi done
虽然该方案能够解决问题,但不是最优方案。
3,optimal solution
再次 search sed 的相关信息,man sed还是最definitive,发现 -s 参数,consider files as separate rather than as a single continuous long stream.
恍然大误,原来之前所有的files当成了一个stream处理了,难怪只是打印一行。最终方案 sed -ns '3p' * ~