小编Rub*_*ens的帖子

从awk中设置当前shell中的变量

有没有办法从内部设置当前shell中的变量awk

我想对文件进行一些处理并打印出一些数据; 因为我会读完整个文件,所以我想保存行数 - 在这种情况下,FNR.

虽然我似乎无法找到一种方法来设置一个带有FNR值的shell变量; 如果不是这样,我必须FNR从我的输出文件中读取,设置,比如说num_lines,FNR有价值.

我尝试过使用某些组合awk 'END{system(...)}',但无法管理它.有什么方法吗?

variables bash awk

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

在R图上添加自定义刻度线

我正在绘制一些数据的cdf,并且我在"x"轴上添加了对数刻度.刻度线间距与我想要的完全一样,但我希望能够在特定点上添加 一些刻度线.

我不想改变蜱的分布在我的情节,从n by nm by m,我想简单地拥有,从蜱中n by n,一些进一步的刻度标记上的一些价值观.

我想让它反映在轴xy轴上,这样我就可以在整个图形中将网格放入这些新标记中.

到目前为止,我有图形和网格 - 我不介意将网格放在图形后面,我只是想添加一些自定义标记.

# Cumulative Distribuition
pdf("g1_3.pdf")

plot(x = f$V2, y = cumsum(f$V1), log = "x", pch = 3,
     xlab = "Frequency", ylab = "P(X <= x)",
     panel.first = grid(equilogs = FALSE))

axis(1, at = c(40, 150))
abline(h = 0.6, v = 40, col = "lightgray", lty = 3)
abline(h = 0.6, v = 150, col = …
Run Code Online (Sandbox Code Playgroud)

plot r

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

使用shell脚本计算文件和目录

我正在学习bash脚本,并编写了一个脚本来计算作为参数提供的目录中的文件和目录.我让它工作的方式对我来说很奇怪,我想知道是否有更简单的方法.

我已经注释掉了可行的代码,但将其作为比较.我试图让for-loop工作,而是使用其中的if语句来检测给定位置中的项是文件还是目录.

编辑:我刚刚发现注释的代码也计算了给定位置的子目录中的所有文件和目录!有没有办法防止这种情况,只计算给定位置的文件和目录?

#!/bin/bash

LOCATION=$1
FILECOUNT=0
DIRCOUNT=0

if [ "$#" -lt "1" ]
then
    echo "Usage: ./test2.sh <directory>"
    exit 0
fi

#DIRS=$(find $LOCATION -type d)
#FILES=$(find $LOCATION -type f)

#for d in $DIRS
#do
#   DIRCOUNT=$[$DIRCOUNT+1]
#done

#for f in $FILES
#do
#   FILECOUNT=$[$FILECOUNT+1]
#done

for item in $LOCATION
do
if [ -f "$item" ]
    then
         FILECOUNT=$[$FILECOUNT+1]
    elif [ -d "$item" ]
        then
         DIRCOUNT=$[$DIRCOUNT+1]
fi
done

echo "File count: " $FILECOUNT
echo "Directory count: " …
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell scripting

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

SELECT WHERE IN - mySQL

假设我有以下表格:

 ID, Name 
 1, John 
 2, Jim 
 3, Steve 
 4, Tom
Run Code Online (Sandbox Code Playgroud)

我运行以下查询

SELECT Id FROM Table WHERE NAME IN ('John', 'Jim', 'Bill');
Run Code Online (Sandbox Code Playgroud)

我希望得到类似的东西:

ID
1
2
NULL or 0
Run Code Online (Sandbox Code Playgroud)

可能吗?

mysql select where

11
推荐指数
2
解决办法
9万
查看次数

PHP mysql_real_escape_string返回空字符串

我正在尝试对我的数据库应用程序(对于一个类)进行一些安全性和清理.开始时,我正在尝试使用mysql_real_escape_string,但每当我使用它时,它总是返回一个空字符串!

这是连接代码:

include_once ("./connect.php");
$db_connection = new mysqli($SERVER, $USERNAME, $PASSWORD, $DATABASE);
if (mysqli_connect_errno()) {
    echo("Can't connect to MySQL Server. Error code: " . mysqli_connect_error());
    return null;
}
$field = mysql_real_escape_string($_GET['value']);
$upc = $_GET['upc'];
$type = $_GET['field_type'];
echo $field;
echo $upc;
echo $type;
Run Code Online (Sandbox Code Playgroud)

当php实际执行时,$ upc和$ type被打印出来,但是没有$ field字段.香港专业教育学院尝试使用中间字符串,但我得到相同的结果.我真的很不知道这里出了什么问题.

此外,我已经完成了一个var_dump $field,它声称mysql_real_escape_string返回FALSE,这应该在没有连接(?)时发生,但有一个.

php mysql database mysql-real-escape-string

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

ps显示线程名称

是否有ps(或类似工具)显示pthread名称的方法?我写了以下简单的程序:

// th_name.c
#include <stdio.h>
#include <pthread.h>

void * f1() {
    printf("f1 : Starting sleep\n");
    sleep(30);
    printf("f1 : Done sleep\n");
}

int main() {

    pthread_t  f1_thread;
    pthread_create(&f1_thread, NULL, f1, NULL);
    pthread_setname_np(f1_thread, "f1_thread");

    printf("Main : Starting sleep\n");
    sleep(40);
    printf("Main : Done sleep\n");
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

是否有一个命令/实用程序(如ps)可用于显示上述程序的线程及其名称.

$ /tmp/th_name > /dev/null &
[3] 2055
$ ps -eLf | egrep "th_name|UID"
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
aal      31088 29342 31088  0    2 10:01 pts/4 …
Run Code Online (Sandbox Code Playgroud)

linux pthreads ps

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

无法在枚举中声明"div"

我想用基本的数学运算声明一个枚举如下:

enum Operations 
{
    div,
    mul,
    add,
    sub
};
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨这个声明,因为div是C++中的保留关键字.我怎样才能覆盖它?还是有任何解决方案?

这是错误消息:

错误:'div'重新声明为不同类型的符号/usr/include/stdlib.h:158:错误:先前声明'div_t div(int,int)'

c++ enums scope namespaces

10
推荐指数
2
解决办法
589
查看次数

在lambda演算中定义堆栈数据结构及其主要操作

我正在尝试stack使用定点组合器在lambda演算中定义数据结构.我试图定义两个操作,insertion以及removal元素,所以,pushpop,但是我能够定义的唯一一个,插入,不能正常工作.删除我无法弄清楚如何定义.

这是我对push操作的方法,我的定义是stack:

Stack definition:
STACK = \y.\x.(x y)
PUSH = \s.\e.(s e)
Run Code Online (Sandbox Code Playgroud)

我的堆栈初始化为一个元素来指示底部; 我在0这里使用:

stack = STACK 0 = \y.\x.(x y) 0 = \x.(x 0)       // Initialization
stack = PUSH stack 1 = \s.\e.(s e) stack 1 =     // Insertion
    = \e.(stack e) 1 = stack 1 = \x.(x 0) 1 =
    = (1 0)
Run Code Online (Sandbox Code Playgroud)

但是现在,当我尝试插入另一个元素时,它不起作用,因为我的初始结构已被解构.

如何修复STACK定义或PUSH定义,以及如何定义POP操作?我想我将不得不应用组合器,以允许递归,但我无法弄清楚如何做到这一点.

参考: …

lambda functional-programming combinators lambda-calculus y-combinator

8
推荐指数
2
解决办法
1758
查看次数

合并大熊猫数据帧时的组合爆炸

我正在尝试合并pandas中的一系列数据帧.我有一个dfs列表,dfs以及它们相应标签的列表,labels我想将所有dfs合并到1 df中,以便df中的公共标签从labels列表中的标签中获取后缀.即:

def mymerge(dfs, labels):
  labels_dict = dict([(d, l) for d, l in zip(dfs, labels)])
  merged_df = reduce(lambda x, y:
                     pandas.merge(x, y, 
                                  suffixes=[labels_dict[x], labels_dict[y]]),
                     dfs)
  return merged_df
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我得到错误:

pandas.tools.merge.MergeError: Combinatorial explosion! (boom)
Run Code Online (Sandbox Code Playgroud)

我正在尝试进行一系列合并,每次合并最多会增加列数N,其中N是列表中"next"df中的列数.最终的DF应该具有与添加在一起的所有df列一样多的列,因此它会相加增长而不是组合.

我正在寻找的行为是:在指定的列名称上加入dfs(例如指定on=)或者dfs被索引.联合非公共列名称(如外连接).如果列出现在多个dfs中,则可以选择覆盖它.更多关注文档,听起来update可能是最好的方法.虽然当我尝试join='outer'它时会引发一个异常信号,表明它没有实现.

编辑:

这是我尝试实现这个,它没有处理后缀,但说明了我正在寻找的合并类型:

def my_merge(dfs_list, on):
    """ list of dfs, columns to merge on. """
    my_df = dfs_list[0]
    for right_df in dfs_list[1:]:
        # Only put the columns from the right df
        # that are …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy pandas

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

子shell IO重定向

给定一个文件"foo.txt",创建自:

$ seq 1 10 > "foo.txt"
Run Code Online (Sandbox Code Playgroud)

我正在尝试读取文件的第一行和最后一行,并且我开始将文件重定向到子shell,以便命令列表将按顺序使用该文件 - 每个命令都使用来自该点的输入最后一个命令离开了,我想:

$ (head -1; tail -1) < "foo.txt"
1
10
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用临时文件描述符,输出不一样:

$ (head -1; tail -1) < <(seq 1 10)
1
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我不确定要命名的是什么<(seq 1 10),但这个临时文件描述符和常规文件描述符("foo.txt")之间的区别是什么导致子shell执行的行为不同?

  2. 如何在不实际创建文件的情况下实现将a重定向"foo.txt"到子shell但没有临时文件的相同行为.

bash redirect file-descriptor subshell

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