[英]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.