我想在文件中搜索一个模式,并在找到该模式后打印5行.
我需要使用awk才能做到这一点.
例:
文件内容:
.
.
.
.
####PATTERN#######
#Line1
#Line2
#Line3
#Line4
#Line5
.
.
.
Run Code Online (Sandbox Code Playgroud)
如何解析文件并仅打印上述行?我是否使用包含"PATTERN"的行的NR并继续增加到5并在此过程中打印每一行.如果在Awk中有任何其他有效的扫描仪,请告诉我.
假设我有一个数组
unsigned char arr[]= {0,1,2,3,4,5,6,7,8,9};
Run Code Online (Sandbox Code Playgroud)
除了将它们全部复制到另一个数组之外,还有办法对它们执行移位操作.我们可以使用链接列表轻松完成它,但我想知道我们是否可以使用移位运算符并更快地完成工作.
注意:此问题中的数据只是一个示例.答案应该与数组中的数据无关.
我尝试在Linux和VS 2008中编译以下代码:
#include <iostream> // this line has a ".h" string attached to the iostream string in the linux version of the code
using namespace std; // this line is commented in the linux version of the code
void main()
{
int a=100;
char arr[a];
arr[0]='a';
cout<<"array is:"<<arr[0];
}
Run Code Online (Sandbox Code Playgroud)
此行在g ++版本中有效,但在Visual Studio中不起作用.它会引发以下错误:
1>c:\users\bibin\documents\visual studio 2008\projects\add\add\hello.cpp(7) : error C2057: expected constant expression
1>c:\users\bibin\documents\visual studio 2008\projects\add\add\hello.cpp(7) : error C2466: cannot allocate an array of constant size 0
1>c:\users\bibin\documents\visual studio 2008\projects\add\add\hello.cpp(7) : error …Run Code Online (Sandbox Code Playgroud) 系统:Solaris我试图使用分隔符作为另一个字符串来拆分字符串
例如:
主要字符串是: /as/asdasd/asdasd/root/asdqwe/asd/asssdd/
我想把它分成两部分,从"根"子串这样
$1 = /as/asdasd/asdasd/
和
$2 = asdqwe/asd/asssdd/
这是我使用FS实现的代码,但它不起作用:
echo /as/asdasd/asdasd/root/asdqwe/asd/asssdd/ | awk '
BEGIN { FS = "root" } { print $2 }'
Run Code Online (Sandbox Code Playgroud) 我想知道为什么这段代码不起作用的技术原因(在内存方面):
#include <stdio.h>
#include <stdlib.h>
int* fun(int*);
int main()
{
int a=5;
int* ptr;
// ptr=(int*)malloc(sizeof(int));
fun(ptr);
a=*ptr;
printf("\n the val of a is:%d",a);
return 0;
}
void fun(int* ptr)
{
ptr = (int*)malloc(sizeof(int));
*ptr = 115;
}
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我认为堆(更重要的是地址)对于堆栈中的所有函数变量是通用的.
另外,为什么这会起作用.如果我评论函数内部的内存分配乐趣并取消注释main中的内存分配.它工作正常.
我在我的unix教科书中读到bss用于存储未初始化的变量(全局声明).这意味着静态变量是单独存储的,而不是存储在bss中.唯一的另一个地方是数据段.
这是我的问题:bss段是数据段的一部分还是两个完全不同的内存段?另外,为什么要将全局变量与静态变量分开?
我在一次采访中被问到这个问题。我使用埃拉托色尼概念筛和数组实现了一个算法。
有没有更好的方法来解决这个问题对于那些不知道筛子的人,这里是链接:
http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
编辑:在时间和空间复杂性方面都是最好的。我只是告诉他们 SoE 的缺陷是空间复杂性。所以他们问我是否可以做些什么。以下是采访的过程:1) 实现一个算法,打印从 1 到 n 的素数 Ans:我使用 SoE 实现 2) 这是最好的方法吗 Ans:???
我需要处理两个文件内容.我想知道我们是否可以使用一个nawk声明来解决它.
文件A内容:
AAAAAAAAAAAA 1
BBBBBBBBBBBB 2
CCCCCCCCCCCC 3
Run Code Online (Sandbox Code Playgroud)
文件B内容:
XXXXXXXXXXX 3
YYYYYYYYYYY 2
ZZZZZZZZZZZ 1
Run Code Online (Sandbox Code Playgroud)
我想比较,如果$2(第二场)在文件中的是相反$2的文件B.我不知道如何写规则NAWK多文件处理?我们如何将A $2与B 区分开来$2
编辑:我需要将A的第一行(即1)的2美元与B的最后一行(再次为1)的2美元进行比较.然后比较A中第2行的2美元和第2行的第2行中的2美元.等.....
我对下面的代码及其行为有疑问:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define N 5
#define nt 1
int pm[N][2],pid[N];
int i,j,size;
char s[100];
int count=0;
int main()
{
for(i=1;i<N;i++)
{
printf("\n i=%d",i);
if(pid[i]=fork() == -1)
{
printf("\n fork not wrking");
exit(1);
}
else if(pid[i]>0)
{
printf(" \n pid:%3d\n",pid[i]);
break;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我最初认为代码会产生一个进程并跳出循环.因此,
1产生2并跳出.
2次产卵3次,跳出
3次产卵4次,跳过
4次产卵5次并跳过.
我尝试执行此代码并对我得到的答案感到惊讶(对于代码中的i的printf).这是输出
i=1
i=2
i=3
i=2
i=4
i=3
i=3
i=3
i=4
i=4
i=4
i=4
i=4
i=4
i=4
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释这里发生了什么.注意:我正在使用Solaris计算机.
C++ STL中定义的向量是重入的还是线程安全的?我可以使用两个线程并在不使用互斥锁的情况下在矢量的两半上工作(在这种情况下是排序)吗?例如:
int size = (Data_List.size())/2;
Thread A()
{
................ // Do we need to lock Data_list with a mutex
sort(Data_List.begin(),Data_List.begin()+size,cmp);
}
Thread B()
{
....// Do we need to lock Data_list with a mutex
sort(Data_List.begin()+(size+1),Data_List.end(),cmp);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我们需要使用互斥锁来锁定Data_List的访问权限吗?
注意:cmp函数是一个常规的int比较函数.