Unix 使用grep查找每行中的字符串
我只想找到从文件\u B到文件\u A的第8-17位的值 文件包含:Unix 使用grep查找每行中的字符串,unix,grep,cut,Unix,Grep,Cut,我只想找到从文件\u B到文件\u A的第8-17位的值 文件包含: $cat FILE_B 9237770 63943100 6393390990 文件A包含 $cat FILE_A 50000092280794230000092384245540 50000092280938880000009237770528 50000092377704630000009154893441 输出应该是 50000092377704630000009154893441 自第8-17
$cat FILE_B
9237770
63943100
6393390990
文件A包含
$cat FILE_A
50000092280794230000092384245540
50000092280938880000009237770528
50000092377704630000009154893441
输出应该是
50000092377704630000009154893441
自第8-17位(9237770463)起,数字包含9237770(位于文件B中)
我有一个脚本,但没有给出确切的输出。
$cut -c 8-17 FILE_A | grep -f FILE_B
输出:
9237770
请尝试以下命令:
cut -c 8-17 FILE_A |
grep -nf FILE_B |
cut -d: -f1 |
awk 'FNR==NR{a[$1];next};FNR in a' - FILE_A
- 将
选项添加到-n
以打印行号(建议grep
)fgrep
- 然后
这些数字cut
- 使用
打印这些行awk
sed
对文件进行预处理,使其成为真正的正则表达式列表:
例如:
sed 's/.*/^.\{6\}&.*$/' FILE_B
产生
^.{6}9237770.*$
^.{6}63943100.*$
^.{6}6393390990.*$
您可以这样使用它:
egrep -f <(sed 's/.*/^.\{6\}&.*$/' FILE_B) FILE_A
白鹭-f