标签: quoting

awk可以处理在引用字段中包含逗号的CSV文件吗?

我使用awk来计算csv文件中一列的总和.数据格式如下:

id, name, value
1, foo, 17
2, bar, 76
3, "I am the, question", 99
Run Code Online (Sandbox Code Playgroud)

我使用这个awk脚本来计算总和:

awk -F, '{sum+=$3} END {print sum}'
Run Code Online (Sandbox Code Playgroud)

name字段中的某些值包含逗号,这会破坏我的awk脚本.我的问题是:能解决这个问题吗?如果是的话,我该怎么做?

谢谢.

csv awk field quoting text-parsing

24
推荐指数
4
解决办法
2万
查看次数

传递引用的参数时,为什么我会得到"/ bin/sh:参数列表太长"?

可以传递给命令行多长时间sh -c ''?(在bash和bourne shell中)

该限制远低于操作系统的限制(在现代Linux的情况下).

例如:

$ /bin/true $(seq 1 100000)
$ /bin/sh -c "/bin/true $(seq 1 100000)"
bash: /bin/sh: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个问题呢?

更新

我想注意到getconf这里无法帮助(因为这不是系统限制):

$ seq 1 100000 | wc -c
588895
$ getconf ARG_MAX
2097152
Run Code Online (Sandbox Code Playgroud)

更新#2

现在我明白了这里有什么意义.这不是shell限制,即系统限制,但是对于每个参数的长度,而不是整个arglist.

$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
Run Code Online (Sandbox Code Playgroud)

谢谢CodeGnome的解释.

bash shell command-line arguments quoting

24
推荐指数
2
解决办法
3万
查看次数

sed给出:sed:无法读取:没有这样的文件或目录

我有以下bash脚本,对于找到的每个图像重复.它需要迭代所有html,cssjs文件,并替换该文件中所有出现的图像.

 for image in app/www/images-theme-dark/*.png
    do
        echo "installing icon" $image

        # extract filename from iconpath
        iconfile=$(basename $image)
        iconPath="images/"$(basename $image)

        # replace paths in all files containing icon paths
        find app/www -type f \( -name "*.html" -or -name "*.css" -or -name "*.js" \
                            -or -name "*.appcache" \)  \
            -exec sed -i '' -e 's|$iconPath|images-theme-dark/$iconfile|g' "{}" \;

    done
Run Code Online (Sandbox Code Playgroud)

但是当我运行脚本时sed给出:

sed: can't read : No such file or directory

在StackOverflow上我发现sed:无法读取:没有这样的文件或目录但是我已经有了引号{} …

bash sed quoting gnu-sed

24
推荐指数
3
解决办法
3万
查看次数

f 字符串:与函数调用不匹配的“(”

我试图在 python 中使用 f 字符串将一些变量替换为我正在打印的字符串,但出现语法错误。这是我的代码:

print(f"{index+1}. {value[-1].replace("[Gmail]/", '')}")
Run Code Online (Sandbox Code Playgroud)

我在添加替换后才开始遇到问题。我已经检查过很多次了,我确信我没有漏掉括号。我知道还有很多其他方法可以实现此目的,其中一些可能更好,但我很好奇为什么这行不通。

python quotes quoting function-call f-string

24
推荐指数
1
解决办法
4万
查看次数

如何传递包含引号/空格的脚本参数?

我正在尝试编写一个notify-finish可以添加到任何命令之前的脚本.完成后,它将运行以下参数给出的命令,然后在命令完成时通过电子邮件发送给用户.这就是我所拥有的:

PROG=$1
# Run command given by arguments
$@
ECODE=$?
echo -e "Subject: `hostname`: $PROG finished\r\nTo: <$USER>\r\n\r\nExited with $ECODE\r\n" | sendmail $USER
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效,但是当参数包含空格时,引用会被删除.

工作范例:

notify-finished rsync -avz source/ user@remote:dest/
Run Code Online (Sandbox Code Playgroud)

失败的例子:

notify-finished rsync -avz -e 'ssh -c blowfish' source/ user@remote:dest/
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,$@扩展到rsync -avz -e ssh -c blowfish source user@remote:dest/,缺少单引号.它也不适用于双引号,也不适用于$*.

在阅读其他帖子之后,我尝试将命令放在一个数组中,但是我得到了完全相同的问题:

CMD=(notify-finished rsync -avz -e 'ssh -c blowfish' source/ user@remote:dest/)
${CMD[@]}
Run Code Online (Sandbox Code Playgroud)

我如何使这项工作适用于所有论点?

bash quoting

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

bash变量扩展$ {var:+"..."}在这里 - 文档删除双引号?

我试图理解为什么Bash在使用${parameter:+word}(使用备用值)进行变量扩展时,在here-document中删除双引号(但不是单引号),例如:

% var=1
% cat <<EOF
> ${var:+"Hi there"}
> ${var:+'Bye'}
> EOF
Hi there
'Bye'
Run Code Online (Sandbox Code Playgroud)

根据手册,后面的"单词" :+用波浪扩展,参数扩展,命令替换和算术扩展处理.这些都不应该做任何事情.

我错过了什么?如何在扩展中获得双引号?

bash heredoc quoting expansion

23
推荐指数
2
解决办法
1603
查看次数

开票与报价或估算

如果发票可以无效,是否应将它们用作报价单?

我有一个Invoices表是从与Job或相关联的库存创建的Order.我可以将一张Quotes桌子作为库存和发票之间的中间位置,但感觉我会有重复的数据结构和逻辑来处理"这是一个引用吗?" 位.

从商业角度来看,报价从不同的发票:报价之前承诺发送和发送发票,一旦完成,付款到期,但如何在我的资料库和模型来表示这一点.

  • 在数据库中存储和管理报价和发票的优雅方式是什么?

编辑:对于此特定实例,指示Job=== Order.

database-design invoice quoting

22
推荐指数
3
解决办法
2929
查看次数

如何在ssh/remote bash命令中转义单引号字符?

我正在构建一小组脚本来远程启动,停止和检查进程的状态.在stop这些脚本应该寻找一个过程,并杀死它.因此,我做:

ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '{print $2}' | head -n 1`'
Run Code Online (Sandbox Code Playgroud)

这里的问题是awk标记化步骤需要单引号,并且这些单引号与用于通过ssh执行远程命令的单引号冲突.这些单引号如何被转义?

ssh bash quoting

22
推荐指数
4
解决办法
4万
查看次数

仅使用bash /标准Linux命令在字符串中剥离单引号和双引号

我正在寻找能够使用bash /标准Linux命令转换字符串的内容,如下所示:

  1. 应删除字符串周围的单引号
  2. 应删除字符串周围的双引号
  3. 不带引号的字符串应保持不变
  4. 具有无与伦比的周围引号的字符串应保持不变
  5. 不包含字符串的单引号应保留
  6. 不包含字符串的双引号应保留

例如:

  • '食物'应该成为食物
  • "食物"应该成为食物
  • 食物应该保持不变
  • "食物"应该保持不变
  • "食物"应该保持不变
  • 'Fo'od'应该成为Fo'od
  • "Fo'od"应该成为Fo'od
  • 佛陀应该保持不变
  • 'Fo"od'应该变成Fo"od
  • "Fo"od"应该变成Fo"od
  • Fo"od应该保持不变

谢谢!

linux bash quotes quoting

20
推荐指数
4
解决办法
3万
查看次数

引用php中的常量:"这是一个MY_CONSTANT"

我想在php中使用常量,但我也想把它放在双引号内,就像变量一样.这是可能吗?

define("TESTER", "World!");
echo "Hello, TESTER";
Run Code Online (Sandbox Code Playgroud)

显然输出"Hello,TESTER",但我真正想要的是:

$tester = "World!";
echo "Hello, $tester";
Run Code Online (Sandbox Code Playgroud)

输出"你好,世界!".

php constants quoting

19
推荐指数
3
解决办法
7935
查看次数