小编asi*_*ght的帖子

sed不在bash脚本中工作

我已经阅读了关于这个主题的所有类似问题,但没有找到与我所遇到的问题相匹配的问题.如果已经回答,我道歉.

在我写的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)

我假设我错过了一些非常明显的东西,但是我已经完成了盯着它,希望得到的答案是从屏幕上跳下来并拍打我的脸.请帮忙 :-)

蒂姆

linux bash sed

5
推荐指数
1
解决办法
7971
查看次数

grep/awk stdin限制?

我环顾四周,但找不到任何已经回答此问题的人.

我正在编写一个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个失踪......

有没有到任何限制stdingrepawk-全数据库超过200万线长...

请帮忙!:-)

bash awk grep stdin

1
推荐指数
1
解决办法
424
查看次数

标签 统计

bash ×2

awk ×1

grep ×1

linux ×1

sed ×1

stdin ×1