运行时:
sudo /sbin/ldconfig
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
/sbin/ldconfig: /usr/local/lib/ is not a symbolic link
Run Code Online (Sandbox Code Playgroud)
当我运行文件时:
file /usr/local/lib/
/usr/local/lib/: directory
Run Code Online (Sandbox Code Playgroud)
里面/usr/local/lib/有我使用的三个库.我会在这里称他们为lib1,lib2和lib3.
现在,当我ldd在我的二进制文件上执行时,它会产生:
lib1.so => not found
lib2.so => not found
lib3.so => /usr/local/lib/lib3.so (0x00216000)
Run Code Online (Sandbox Code Playgroud)
但是所有的文件夹都在同一个文件夹中/usr/local/lib/{lib1,lib2,lib3}.so.
每次运行时ldconfig,都会出现相同的错误:
/usr/local/lib/ is not a symbolic link
Run Code Online (Sandbox Code Playgroud)
我认为/usr/local/lib应该两次申报/etc/ld.conf.d/*.conf,但不是:
sudo egrep '\/usr\/local' /etc/ld.so.conf.d/*
projectA.conf.old:/usr/local/projectA/lib
local.conf:/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
ld.so.conf只包括/etc/ld.so.conf.d/*.conf,所以这*.old不是处理,它指的是/usr/local/projectA/lib.
经过一段时间后,我删除了所有的lib1和lib2(在某些时候我在二进制文件夹上测试了它),发生了同样的错误.
这是我的问题,我有一组大gz日志文件,该行中的第一个信息是日期时间文本,例如:2014-03-20 05:32:00.
我需要检查哪些日志文件包含特定数据.对于init我只需做一个:
'-query-data-'
zgrep -m 1 '^20140320-04' 20140320-0{3,4}*gz
Run Code Online (Sandbox Code Playgroud)
但是如何对最后一行执行相同的操作而不处理整个文件,就像使用zcat(太重)一样:
zcat foo.gz | tail -1
Run Code Online (Sandbox Code Playgroud)
附加信息,这些日志是使用它的初始记录的数据时间创建的,所以如果我想在14:00:00查询日志,我还要在14:00:00之前创建的文件中搜索,作为文件将在13:50:00创建,在14:10:00关闭.
如何在结果字符串中精确重复n个匹配的模式?
示例如果我有以下文本:
++ '[' -f /etc/bashrc ']'
++ . /etc/bashrc
+++ '[' '[\u@\h \W]\$ ' ']'
+++ '[' -z 'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' ']'
+++ shopt -s checkwinsize
+++ '[' '[\u@\h \W]\$ ' = '\s-\v\$ ' ']'
+++ shopt -q login_shell
+++ '[' 506 -gt 199 ']'
++++ id -gn
Run Code Online (Sandbox Code Playgroud)
现在我想用每个'+'代替3个空格,但它只能在模式的开头发生.我会使用:<range>s/^<pattern> :%s/+/ /g,但如果它在文本的其余部分中有一个"+",我就会搞砸它.
问题:如何在开始时匹配每个+并在结果字符串中重复相同的found +计数?预期:
^ ++$ -> ^ $
^ +++$ -> ^ $
^ +$ -> ^ $
Run Code Online (Sandbox Code Playgroud)
谢谢
如何让vim的:global命令询问用户是否要执行ex命令?:substite与使用'c'选项的命令所发生的情况类似%s:Foo:Fighters:gc
我试过了:
:g/mypattern/.s:.*\n::gc
Run Code Online (Sandbox Code Playgroud)
和
:g/mypattern/s:.*\n::gc
Run Code Online (Sandbox Code Playgroud)
但是如果在下面的线上有匹配则跳跃.例如:
MATCH
NONMATCH
MATCH
MATCH
MATCH
Run Code Online (Sandbox Code Playgroud)
结果是:
NONMATCH
MATCH <<-- this should be erased.
Run Code Online (Sandbox Code Playgroud)
提示g/FOO/d是完美的.
在shell中,我使用以下函数创建文件列表并将其传递给vim.
感觉还好,但是我丢失了行参考,我按正确的顺序打开文件,但是当光标从第一行开始时我必须再次搜索文本.
〜/ .bashrc上的实际功能
function vimgrep(){
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' | grep -v 'Test\|test'` +ls
}
function vimgrep2(){
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' ` +ls
}
Run Code Online (Sandbox Code Playgroud)
Obs.:filelist必须来自shell到vim,然后它必须保留缓冲文件的行引用,就像结果:make当它捕获任何错误(但没有底部窗口[:cwindow]).
编辑:好的...不是那么优雅,但我可以将搜索到的字符串传递给vim为+ /"$ 1",如:
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' ` +/"$1"
Run Code Online (Sandbox Code Playgroud)
如果脚本不使用临时文件会更好.
谷歌上的每个参考仅显示简单的示例,我在代码上有这种情况:
#define XHANDLER(A,B,H) X_TO_BUS_HANDLER(A,B,H) X_FROM_BUS_HANDLER(A,B,H)
namespace{
X_TO_BUS_HANDLER( some::SomeClassX,
bus::SomeBus,
foo::SomeHandler );
Run Code Online (Sandbox Code Playgroud)
有没有人知道这个定义是如何工作的?一种模式和两种令牌列表?请参考.
我egrepED代码,但只找到X_TO_BUS_HANDLER使用.
如何make_shared计算时间,分配不同的区域而不重复循环?
我有以下代码:
for( unsigned int count = 0; count < demandedSize; ++count )
{
m_connectionList.push_back( std::make_shared< Foo >( m_ip, m_port ));
}
Run Code Online (Sandbox Code Playgroud)
如何在没有循环的情况下缩短这个?
我知道std::vector接收第二个参数const T&,但在这种情况下,所有shared_ptrs都指向同一个地址(值被复制).
std::vector< std::shared_ptr<Foo> > vet( demandedSize, std::make_shared<Foo>( m_ip, m_port ) );
Run Code Online (Sandbox Code Playgroud)
如何执行make_shared计数时间,结果分配不同的区域而不重复循环
在Oracle 9i中,在命令行程序中.如何dbms_output.put_line在前一个BEGIN和最后一个之间受影响的行数(更新/删除/插入)COMMIT?
另外,如何打印已执行指令的数量(DML,DDL)?