基本上我有一个像这样的文件:
junk
morejunk
somestring
bats
car
somestring
bats
car
somestring
bats
car
Run Code Online (Sandbox Code Playgroud)
并且我想junk
在第一次出现之前删除所有somestring
文件,因此文件看起来像
somestring
bats
car
somestring
bats
car
somestring
bats
car
Run Code Online (Sandbox Code Playgroud)
我按照这个问题的建议使用,sed -i '0,/somestring/,d' file.txt
但是somestring
当我想将该行保留为第一行时,它会删除第一次出现的行.
是否有水平滚动的键盘快捷键?我知道要垂直滚动你可以做<ctrl><up>
或者<ctrl><down>
,我希望会有类似水平滚动的东西,但我找不到任何东西.
我很难弄清楚这一点;我有一个程序,iverilog
它执行一个system()
调用来调用另一个程序,ivl
. 我想ivl
在 gdb 中调试第二个程序,但是当我使用父进程调用 gdb 时,我无法让 gdb 在子进程中设置任何断点。下面是这些程序的样子:
//iverilog-main.cpp (Parent process)
int main(){
//...
system("ivl arg1 arg2");
//...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
.
//ivl-main.cpp (child process)
int main(){
//...
//stuff I want to debug
//...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
.
我正在运行的 gdb 命令是: gdb iverilog -x cmds.gdb
# cmds.gdb
set args hello.v
set follow-fork-mode child
set breakpoint pending on
break ivl-main.cpp:main
run
Run Code Online (Sandbox Code Playgroud)
不幸的是,gdb 不会在 处中断ivl-main.cpp:main
,它只是完成而不会中断;我得到的输出是:
Starting program: /usr/local/bin/iverilog hello.v
[New process 18117] …
Run Code Online (Sandbox Code Playgroud) 我有一个64位总线,我想用一位线连接总线的每一位.最好的方法是什么?我想做类似下面的事情,但它似乎没有按预期工作.
logic [63:0] bus, other_bus;
logic signal;
...
bus = other_bus & signal;
Run Code Online (Sandbox Code Playgroud) 我试图对verilog中的值进行位移,以使替换的位为1而不是0。即我想这样做0001 << 1
,0011
而不是给0010
似乎其他人都希望删除任何额外的空格,但我有相反的问题.
我有一个文件,称之为some_file.txt
a b c d
and some more
Run Code Online (Sandbox Code Playgroud)
我正在用sed逐行阅读,
num_lines=$(cat some_file.txt | wc -l)
for i in $(seq 1 $num_lines); do
echo $(sed "${i}q;d" $file)
string=$(sed "${i}q;d" $file)
echo $string
done
Run Code Online (Sandbox Code Playgroud)
我希望空白字符的数量保持不变,但我得到的输出是
a b c d
a b c d
and some more
and some more
Run Code Online (Sandbox Code Playgroud)
所以似乎问题是sed删除了字符之间的额外空格,无论如何要解决这个问题?
bash ×2
sed ×2
verilog ×2
awk ×1
c ×1
c++ ×1
debugging ×1
gdb ×1
sublimetext ×1
sublimetext2 ×1
sublimetext3 ×1