【问题标题】:Read an input file one line at a time to pass as input to grep一次读取一行输入文件以作为输入传递给 grep
【发布时间】:2013-09-24 22:19:30
【问题描述】:

我的要求是读取一个文件,然后在读取的行上对文件中的所有行一次运行一个 grep 命令。

过滤与模式匹配的所需文件

find . -name *.ini -exec grep -w HTC {} \; -print | grep ini > input.files

cat input.files

./PLATFORM/android/build/integration/android/suites/android_Prefs_Devices_Comms_Suite/ini/android_0019.ini
./PLATFORM/android/build/integration/android/suites/android_Prefs_Devices_Comms_Suite/ini/android_0150.ini
./PLATFORM/android/build/integration/android/suites/android_Prefs_Devices_Comms_Suite/ini/android_0616_1.ini
./PLATFORM/android/build/integration/android/suites/android_SI_Query_Suite/ini/android_0547_4.ini
./PLATFORM/android/build/integration/android/suites/android_SI_Query_Suite/ini/android_0578.ini
./PLATFORM/android/build/integration/android/suites/android_PDL_Suite/ini/android_5203_1.ini
./PLATFORM/android/build/integration/android/suites/android_System_Maintenance_Suite/ini/android_0579_2.ini

知道如何从 input.files 中一次读取一行并对其执行 grep 命令吗?

cat input.files -exec grep -w HTC_One {} \;

【问题讨论】:

    标签: linux command-line command-line-arguments


    【解决方案1】:

    改用 xargs:

    cat input.files | xargs grep -w HTC_One {} \;

    来自 xargs 手册页:

    xargs 读取项目 来自标准输入,由空格分隔(可以保护 带双引号或单引号或反斜杠)或换行符,并执行 该命令(默认为 /bin/echo)一次或多次,带有任何初始 - 参数后跟从标准输入读取的项目。

    【讨论】:

      【解决方案2】:

      如果你说,结果不会有任何不同:

      grep pattern file1
      grep pattern file2
      

      grep pattern file1 file2
      

      简单地说,使用xargs:

      cat input.files | xargs grep -w HTC_One
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多