sed 处理 多个文件的问题

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' *  ~

 

posted on 2013-08-01 18:04  Harveyaot  阅读(1615)  评论(0编辑  收藏  举报

导航