小编Jos*_*siP的帖子

在Bash中删除字符串的第一个字符

我需要计算ls转储中每行的一个字符串(pathfile)的md5sum directory_listing_file:

./r/g4/f1.JPG
./r/g4/f2.JPG
./r/g4/f3.JPG
./r/g4/f4.JPG
Run Code Online (Sandbox Code Playgroud)

但是应该在没有初始点的情况下计算md5sum.我写了一个简单的脚本:

while read line
do
    echo $line | exec 'md5sum'
done

./g.sh < directory_listnitg.txt
Run Code Online (Sandbox Code Playgroud)

如何从每行中删除第一个点?

bash

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

python中的'负'模式匹配

我有以下输入,

OK SYS 10 LEN 20 12 43
1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt,1234 /data/c13af4/f.txt
.
Run Code Online (Sandbox Code Playgroud)

我想提取包含" OK SYS 10 LEN 20"的行和包含单个"."(点)的最后一行之外的所有输入.也就是说,我想提取以下内容

1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt.1234 /data/c13af4/f.txt
Run Code Online (Sandbox Code Playgroud)

我试过以下,

for item in output:
    matchObj = re.search("^(?!OK) | ^(?!\\.)", item)
    if matchObj:
        print "got item "  + item
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为它不会产生任何输出.

python regex

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

关于linux上的poll实现与solaris上的poll实现

在linux环境中调试我们的应用程序时,我们可以观察到一些事件 - POLLHUP|POLLIN仅在linux上发生.我们的应用程序使用unix套接字.当我们这样做时:

ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
Run Code Online (Sandbox Code Playgroud)

strace显示:

poll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=6, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 3, 16) = 1 
([{fd=7, revents=POLLIN|POLLHUP}])
Run Code Online (Sandbox Code Playgroud)

那种情况永远不会发生在solaris(同样的应用程序)中:结果显示:

2463/3:                 fd=569 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3:                 fd=639 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3:                 fd=631 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=POLLIN
2463/3:                 fd=1160 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3:                 fd=400 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
Run Code Online (Sandbox Code Playgroud)

你能解释一下我在solaris民意调查和liunx民意调查之间的区别吗?提前获取所有答案.

c linux solaris

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

在64位机器上的内存中的结构表示

为了我的好奇心,我编写了一个程序来显示我的结构的每个字节.这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <limits.h>

#define MAX_INT 2147483647
#define MAX_LONG 9223372036854775807

typedef struct _serialize_test{
   char a;
   unsigned int b;
   char ab;
   unsigned long long int c;
}serialize_test_t;


int main(int argc, char**argv){
   serialize_test_t *t;
   t = malloc(sizeof(serialize_test_t));
   t->a = 'A';
   t->ab = 'N';
   t->b = MAX_INT;
   t->c = MAX_LONG;

   printf("%x %x %x %x %d %d\n", t->a, t->b, t->ab, t->c, sizeof(serialize_test_t), sizeof(unsigned long long int));

   char *ptr = (char *)t;

   int i;
   for (i=0; i < …
Run Code Online (Sandbox Code Playgroud)

c

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

C中的位字段填充

继续我在C中的实验,我想看看位字段是如何放在内存中的.我正在使用英特尔64位机器.这是我的一段代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
int main(int argc, char**argv){
       struct box_props
       {
         unsigned int opaque       : 1;
         unsigned int fill_color   : 3;
         unsigned int              : 4; 
         unsigned int show_border  : 1;
         unsigned int border_color : 3;
         unsigned int border_style : 2;
         unsigned int              : 2; 
       };

       struct box_props s;
       memset(&s, 0, 32);
       s.opaque = 1;
       s.fill_color = 7;
       s.show_border = 1;
       s.border_color = 7;
       s.border_style = 3;

       int i;
       printf("sizeof box_porps: %d sizeof unsigned int: %d\n", …
Run Code Online (Sandbox Code Playgroud)

c

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

简单的printf案例

我想*在我的Linux终端窗口上闪烁(星号),所以我想到使用ANSI控制代码并在循环中首先写入*然后sleep(1)写入" "(空格/空字符串)但它不起作用 - 看不到任何东西.为什么?

这是我的代码:

#include <stdio.h>
#include <unistd.h>

void blink(){
    while(1){
        printf("\033[2;2H*");
        sleep(1);
        printf("\033[2;2H ");
    }
}

int main(void){
    blink();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c printf

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

libxml2属性修改C.

我想在我的xml中更改一个属性('voltage'):

...
    <detector voltage="1.2e3f"/>
...
Run Code Online (Sandbox Code Playgroud)

这是我试图这样做的方式:

 void save_detector_attr(xmlNode *node, xmlDoc *doc){
        char *voltage;
        xmlAttrPtr s_vnewattr;
        char buf[128];
        xmlNode *cur = node->xmlChildrenNode;
        float sv;
        int cnt = 0;
        while(cur != NULL) {
            if (cur->type == XML_ELEMENT_NODE) {
                if (!xmlStrcmp(cur->name, "detector")){
                    voltage = xmlGetProp(cur, "voltage");
                    sv = atof(voltage);

                    snprintf(buf, 128, "%f", sv + 20.1 );

                    s_vnewattr = xmlNewProp (cur, "voltage", buf);
                    printf(" SAVING to voltage value: %s\n", buf);

                }
            }
            cur = cur->next;
        }
        xmlSaveFormatFile ("./mc2x.xml", doc, 1);
Run Code Online (Sandbox Code Playgroud)

不幸的是,在调用该函数后,我没有重写属性,而是使用了这个新文件:

<detector voltage="1.2e3f" voltage="1220.100000"/> …
Run Code Online (Sandbox Code Playgroud)

c libxml2

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

从std :: map删除对象时销毁对象

当我从中删除元素时,如果调用了默认析构函数,我感到很好奇std::map。这是我做的一个例子:

class CTestMap{
public:
    CTestMap() {
        std::cout << "default constructor called" << std::endl;
    }
    CTestMap(int id) {
        std::cout << "created object: " << id << std::endl;
        m_id = id;

    }
    ~CTestMap() {
            std::cout << "destroyed object: " << this->m_id << std::endl;
    }
    int get_id(){
        return m_id;
    }
    int m_id;
};

int main(void){

    std::map<int, CTestMap>m;
    std::map<int, CTestMap>::iterator m_it;

    std::cout << "created map " << std::endl;

    CTestMap t1(1);
    std::cout << "created test object: " << t1.get_id() << std::endl;
    CTestMap t2(2); …
Run Code Online (Sandbox Code Playgroud)

c++ stdmap std erase

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

setsockopt返回errno = 2

我正在创建一个UDP套接字(centos 6),我想发送广播消息。一切正常,创建套接字有效-socket(..)返回value = 25,但是:

int val = 1;
      if (setsockopt(a, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)) < 1){
          debug("setsockoopt failed with errno: %d, socket %d", errno, a);
      }
Run Code Online (Sandbox Code Playgroud)

setsockopt将errno设置为value =2。Communictaion工作正常,我将udp数据包发送到xxx255主机,我的所有应用程序都将其接收,但是我想知道errno的来源(errno = 2 =没有此类文件或目录)

最好的祝福

c sockets

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

C使用函数参数返回值

我正在尝试运行函数,它将通过传递指针返回两个字符串:

#include <stdio.h>

void gen_str(char *str1, char *str2){
   char *s1 = "abcd";
   char *s2 = "defg";
   str1= strdup(s1);
   str2= strdup(s2);
   printf("\n\r str1 %s str2 %s\n\r", str1, str2);
}


int main(void){
   char *s1, *s2;
   gen_str(s1, s2);
   printf("\n\r s1 %s s2 %s\n\r", s1, s2);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中输出是:

str1 abcd str2 defg


 s1 8, s2 8,
Run Code Online (Sandbox Code Playgroud)

有人能告诉我,我做错了什么?我认为strdup()会为我的新字符串分配内存,并返回填充字符串的指针.但实际行为是不同的.所以我在寻求帮助.

c

0
推荐指数
2
解决办法
5060
查看次数

python中的简单正则表达式

来自字符串:

l="\tsome string in line 1\n\tcmd: DIR @1332243996 (2012.03.20 12:46:36) state op:29 cfg:0\n\tline 3 some other string"
Run Code Online (Sandbox Code Playgroud)

我想提取"DIR",因此我创建了正则表达式:

j = re.search(r'cmd: \w+', l)
Run Code Online (Sandbox Code Playgroud)

但当我这样做时:

print j.group()
Run Code Online (Sandbox Code Playgroud)

我有:

cmd: DIR
Run Code Online (Sandbox Code Playgroud)

我应该怎么做,只获得"DIR",而不是"cmd:",例如:

print j.group()
DIR
Run Code Online (Sandbox Code Playgroud)

thx所有答案

python regex

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

算法比较两个列表并在python中获取相同的元素

我需要列表,其中包含一些共同的元素:

p = [('link1/d/b/c', 'target1/d/b/c'), ('link2/a/g/c', 'target2/a/g/c'), ..., ('linkn/b/b/f', 'targetn/b/b/f')]

q = [['target1/d/b/c', 'target1', 123, 334], ['targetn/b/b/f', 'targetn', 23, 64], ... ,['targetx/f/f/f', 'targetx', 999, 888]]
Run Code Online (Sandbox Code Playgroud)

我试图比较它们并找到共同的元素,然后用结果做一些工作:

do_job('target1/d/b/c', 'target1', 123, 334, 'link1/d/b/c')
Run Code Online (Sandbox Code Playgroud)

现在我使用简单和非常慢的alghortihm:

for item in p:
   link = item[0]
   target = item[1]
   for item2 in q:
       target2 = item2[0]
       if target2 == target:
           do_some_job(...)
Run Code Online (Sandbox Code Playgroud)

我知道,我需要比较这两个列表并创建一个包含所有元素的列表,例如:

pq = [['target1/d/b/c', 'target1', 123, 334, 'link1/d/b/c'], ..., ['targetn/b/b/f', 'targetn', 23, 64, 'linkn/b/b/f']]
Run Code Online (Sandbox Code Playgroud)

然后do_some_job(pq)每当我找到相同的元素时调用而不是调用它

如何获得它?

最好的祝福

python

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

仅使用迭代器访问c ++ stl映射

我希望有一个带有map变量的类作为私有变量:

class CTest{
private:
 std::map<int, int> m_map;
public:
 std::map<int int>::iterator get_iterator();
 void add(int key, int val) { m_map[key] = val; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在函数中some_action()我只能get_iterator()在地图上使用迭代,例如:

CTest c;

/* here i want to go through that m_map, but i cannot have access to it */
void some_actoin(){
 ???
}

int main(void){
  c.add(1, 1);
  c.add(2, 3);
  some_action();
}
Run Code Online (Sandbox Code Playgroud)

关于J.

c++ stl

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

标签 统计

c ×7

python ×3

c++ ×2

regex ×2

bash ×1

erase ×1

libxml2 ×1

linux ×1

printf ×1

sockets ×1

solaris ×1

std ×1

stdmap ×1

stl ×1