一次读取一行输入文件作为输入传递给grep

时间:2013-09-19 17:30:58

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

我的要求是读取一个文件,然后在读取行上一次运行一个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 {} \;

2 个答案:

答案 0 :(得分:5)

如果您说:

,结果将没有任何差异
grep pattern file1
grep pattern file2

grep pattern file1 file2

只需使用xargs

cat input.files | xargs grep -w HTC_One

答案 1 :(得分:0)

请改用xargs:

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

来自xargs手册页:

  

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