繁体   English   中英

如何grep文件中的所有字符

[英]How to grep all characters in file

我有一个包含以下内容的CSV文件:

----------+79975532211,----------+79975532212
4995876655,4995876658

我尝试在Bash脚本中grep这一行

#!/bin/bash

    config='/test/config.conf'

 sourcecsv=/test/sourse.csv

cat $sourcecsv | while read line

do

Oldnumber=$(echo $line | cut -d',' -f1)

cat $config | grep "\\$Oldnumber" -B 8


done

但是当脚本grep值4995876655时出现错误:

grep: Invalid back reference

我如何grep文件中的所有值?

代替:

cat $config | grep "\\$Oldnumber" -B 8

你应该做:

grep -B 8 -F -- "$Oldnumber" "$config"

如果您真的想grep逗号之间的所有字符串,则可以一次完成。

tr ',' '\n' </test/sourse.csv |
grep -F -f - -B 8 /test/config.conf

如果您需要按顺序获取匹配项(第一个字符串的所有匹配项,第二个字符串的所有匹配项,等等),则可以使用适当的while循环遍历它们:

tr ',' '\n' </test/sourse.csv |
while read -r Oldnumber; do
    grep -F -B 8 -e "$Oldnumber" /test/config.conf
done

将文件名保留在变量中似乎没有任何好处。

如果您要搜索以文字反斜杠开头的字符串,则可以将其添加回去。 我添加的-F选项将所有字符串转换为文字。 如果需要元字符并删除-F选项,则需要将反斜杠加倍(在双引号内,单个反斜杠需要表示为双精度;要在正则表达式中获得文字反斜杠,则需要两个反斜杠) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM