我有一个字符序列的文本文件,由两行组成:标题和下一行中的序列本身。该文件的结构如下:
>header1
aaaaaaaaa
>header2
bbbbbbbbbbb
>header3
aaabbbaaaa
[...]
>headerN
aaabbaabaa
Run Code Online (Sandbox Code Playgroud)
在另一个文件中,我有一个要删除的序列标题列表,如下所示:
>header1
>header5
>header12
[...]
>header145
Run Code Online (Sandbox Code Playgroud)
这个想法是从第一个文件中删除这些序列,因此所有这些标头+以下行。我使用 sed 执行此操作,如下所示,
while read line; do sed -i "/$line/,+1d" first_file.txt; done < second_file.txt
Run Code Online (Sandbox Code Playgroud)
它可以工作,但需要很长时间,因为我使用 sed 多次加载整个文件,而且它很大。关于如何加快这个过程的任何想法?
我想在bash中创建一个地图,其中某些地图键的值可能包含连字符(-)
我试过下面的代码
declare -a buckets
buckets["us-east-1"]="bucketname-us-east-1";
region="us-east-1"
buckets[$region]="bucketname-us-east-1";
# both of them throws buckets["us-east-2"]: bad array subscript
buckets["us\-east\-1"]="bucketname-us-east-1";
# throws syntax error: invalid arithmetic operator (error token is "\-east\-1")
Run Code Online (Sandbox Code Playgroud)
还有其他创建地图的方法吗?
我有很多文件(我以5为例)
如果与第一个文件不匹配,则应在输出中附加0
文件1
1001 1 2
1002 1 2
1003 3 5
1004 6 7
1005 8 9
1009 2 3
Run Code Online (Sandbox Code Playgroud)
文件2
1002 7
1003 8
Run Code Online (Sandbox Code Playgroud)
文件3
1001 5
1002 3
Run Code Online (Sandbox Code Playgroud)
文件4
1002 10
1004 60
1007 4
Run Code Online (Sandbox Code Playgroud)
文件5
1001 102
1003 305
1005 809
Run Code Online (Sandbox Code Playgroud)
期望的输出
1001 1 2 0 5 0 102
1002 1 2 7 3 10 0
1003 3 5 8 0 0 305
1004 6 7 0 0 60 0
1005 8 9 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我怎样才能$在csh中逃脱?在<双引号> ( "") 内。我正在尝试这样做,但无法逃避 <dollar> 符号 ( $)
alias e "echo \\!:2-$"
Run Code Online (Sandbox Code Playgroud)
这可行,但不足以满足我的需求
alias e echo \\!:2-$
Run Code Online (Sandbox Code Playgroud) 在尝试优化与服务器有关的数据时,我和我的团队讨论了linux命令的用法。请会员请帮助我们更准确地理解该概念。
在服务器上,我们有每分钟创建的日志文件,我们需要搜索带有特定标签的日志,例如:错误日志,超时日志,请求失败日志。其中许多要求是提供有关这些标签计数的信息
简单的逻辑将是唤醒特定字段(使用定界符)以进行排序,并使用uniq -c命令来计算此类实例的数量。
我可以看到两种执行方法:
cat fname | awk -F":" {'print $1'} | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
和
awk -F":" {'print $1'} fname | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
文件大小可以以GB为单位,因此哪个命令可能更有效。
using namespace std;
#include<iostream>
int passarr(int b[],int s)
{
//Some Modification in the array b
b[0]=0;
b[s-1]=0;
//Printing the array b
for(int i=0;i<s;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
}
int main()
{
int arr[100];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
//Function call and passing array a to the function`
passarr(arr,n);
//Printing the array arr
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我已经将数组传递arr给了函数passarr(),它执行了一些修改.问题是修改也反映在原始数组上.有没有办法将数组传递给函数,以便在执行函数中的任何操作时不会更改原始数组?
使用 AWK,我通过将文本文件拆分为多个记录来处理该文本文件。我使用正则表达式作为记录分隔符RS。有没有办法获取RS仅代表正则表达式字符串的找到的记录分隔符?
例子:
BEGIN { RS="a[0-9]*. "; ORS="\n-----\n"}
/foo/ {print $0 RS;}
END {}
Run Code Online (Sandbox Code Playgroud)
输入文件:
a1. Hello
this
is foo
a2. hello
this
is bar
a3. Hello
this
is foo
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
this
is foo
a[0-9]*.
-----
Hello
this
is foo
a[0-9]*.
-----
Run Code Online (Sandbox Code Playgroud)
如您所见,输出打印RS为表示正则表达式的字符串,但不打印实际值。如何检索记录分隔符的实际匹配值?
预期输出:
Hello
this
is foo
a1
-----
Hello
this
is foo
a3
-----
Run Code Online (Sandbox Code Playgroud) 我在C中自学指针,我的问题是:*p=vec[n]和写一样p=&vec[n],在哪里n只是一个索引而且p是一个指针?
这是我第一次看到这种用法。不幸的是,我找不到相关信息。
awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)
是什么$$1呢?是数组吗?
awk '{print $$1}'
Run Code Online (Sandbox Code Playgroud)
以上仅是示例。请注意,这不是一个单一的$,而是一个$$
如何Z'FEDCBA09'将最高有效位等于1 的boz-literal-constant 或任何其他位模式分配给整数?
标准规定:
INT(A[,KIND]):如果A为boz-literal-constant,则结果的值是根据16.3中的模型,其位序列与根据16.3.3通过填充或截断修改的A的位序列相同的值。最高有效位为1的位序列的解释取决于处理器。
因此,以下分配可能会失败(假定integer默认为32位):
program boz
implicit none
integer :: x1 = int(Z'FEDCBA09')
integer :: x2 = int(Z'FFFFFFFF')
integer :: x3
data x3/Z'FFFFFFFF'/
end program
Run Code Online (Sandbox Code Playgroud)
使用gfortran,这仅在添加时起作用,但这会带来-fno-range-check额外的不良影响:
-fno-range-check:禁用在编译过程中对常量表达式的简化结果进行范围检查。例如,当简化时,GNU Fortran将在编译时给出错误。a = 1. / 0.使用此选项,将不会给出错误,并且将为值分配+ Infinity。如果表达式的计算结果超出的相关范围[-HUGE():HUGE()],则该表达式将替换为-Inf或+Inf适当替换。类似地,DATA i/Z'FFFFFFFF'/在大多数系统上都会导致整数溢出,但是-fno-range-check该值将“环绕”并且i将被初始化为-1。
我尝试了以下方法,效果很好,但仍然不是100%
integer(kind=INT32) :: x1 = transfer(real(Z'FEDCBA09',kind=REAL32),1_INT32)
integer(kind=INT32) …Run Code Online (Sandbox Code Playgroud)