我已经阅读了关于这个主题的所有类似问题,但没有找到与我所遇到的问题相匹配的问题.如果已经回答,我道歉.
在我写的bash脚本中,有一个非常简单的sed命令,它似乎不起作用.没有错误,从命令行运行时命令工作正常.
在set -x的输出中,我可以看到sed命令完美地执行.
GNU bash,版本4.3.11(1)-release(x86_64-pc-linux-gnu)
Bash脚本:(为了更容易理解而降低音量)
#!/bin/bash -x
# This script has the exact same sed command as used on cli
contact='"tim@email.com"'
sed -i "/$contact/d" /home/tim/Desktop/file.txt
exit
Run Code Online (Sandbox Code Playgroud)
壳牌产量:
tim@ubuntu:~/Desktop$ cat file.txt
t,b,tim@email.com
tim@ubuntu:~/Desktop$ ./test.sh
+ contact='"tim@email.com"'
+ sed -i '/"tim@email.com"/d' /home/tim/Desktop/file.txt
+ exit
tim@ubuntu:~/Desktop$ cat file.txt
t,b,tim@email.com
tim@ubuntu:~/Desktop$ sed -i "/"tim@email.com"/d" /home/tim/Desktop/file.txt
tim@ubuntu:~/Desktop$ cat file.txt
tim@ubuntu:~/Desktop$
Run Code Online (Sandbox Code Playgroud)
我假设我错过了一些非常明显的东西,但是我已经完成了盯着它,希望得到的答案是从屏幕上跳下来并拍打我的脸.请帮忙 :-)
蒂姆
我环顾四周,但找不到任何已经回答此问题的人.
我正在编写一个bash脚本,它将读取6个不同的csv文件,并计算所有文件中有多少行一起包含某些标记.
(这是一个联系人列表数据库 - 还有商业或私人电子邮件地址的标签)
以下是我编写的代码示例:
### First Scan - Business emails ###
bus="$(awk 'BEGIN {FS = ","}{print $27}' FILE*full* | grep -c "Business")"
echo "No. of Business Accounts: $bus"
### Second Scan - Private emails ###
priv="$(awk 'BEGIN {FS = ","}{print $27}' FILE*full* | grep -c "Private")"
echo "No. of Private Accounts: $priv"
Run Code Online (Sandbox Code Playgroud)
该脚本返回看似完全正确的值.然而!我知道一个事实,每个文件中的每一行都有标记'business'或'private'在同一位置 - 并且没有空行但是当我将两个结果一起添加时,它不等于完整的行数...大约有45000个失踪......
有没有到任何限制stdin的grep或awk-全数据库超过200万线长...
请帮忙!:-)