我最喜欢的 BASH 命令之一是:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
Run Code Online (Sandbox Code Playgroud)
它在当前目录下的所有文件的内容中搜索指定的 SearchString。作为开发人员,这有时会派上用场。
然而,由于我当前的项目和我的代码库的结构,我想通过不搜索包含“.svn”的目录中或下方的任何文件或任何文件来使此 BASH 命令更加高级以“.html”结尾
find 的 MAN 页面让我感到困惑。我尝试使用 -prune,它给了我奇怪的行为。为了仅跳过 .html 页面(开始),我尝试了:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
Run Code Online (Sandbox Code Playgroud)
并没有得到我希望的行为。我想我可能错过了 -prune 的重点。你们能帮帮我吗?
谢谢
我正在尝试使用sed数字后跟一个点(例如3., 355.)和一个空字符串来替换所有模式。所以我尝试:
sed 's/\d+\.//g' file.txt
Run Code Online (Sandbox Code Playgroud)
但它不起作用。这是为什么?
检查输出
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";'
Run Code Online (Sandbox Code Playgroud)
在文本编辑器(例如,vi)中显示以下内容:
^[[37mABC
^[[0m
Run Code Online (Sandbox Code Playgroud)
如何从输出文件中删除 ANSI 颜色代码?我想最好的方法是通过各种流编辑器来传输输出。
以下不起作用
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' | perl -pe 's/\^\[\[37m//g' | perl -pe 's/\^\[\[0m//g'
Run Code Online (Sandbox Code Playgroud) 我需要用替换来替换文本文件中的一些文本。通常我会做类似的事情
sed -i 's/text/replacement/g' path/to/the/file
Run Code Online (Sandbox Code Playgroud)
问题是text和replacement都是包含破折号、斜线、黑斜线、引号等的复杂字符串。如果我转义所有必要的字符text,东西很快就会变得不可读。另一方面,我不需要正则表达式的强大功能:我只需要按字面意思替换文本即可。
有没有办法在不使用某些 bash 命令的正则表达式的情况下进行文本替换?
编写一个执行此操作的脚本会相当简单,但我认为应该已经存在一些东西。
我正在使用 sed,GNU sed 版本 4.2.1。我想使用交替“|” 子表达式中的符号。例如 :
echo "blia blib bou blf" | sed 's/bl\(ia|f\)//g'
Run Code Online (Sandbox Code Playgroud)
应该回来
" blib bou "
Run Code Online (Sandbox Code Playgroud)
但它返回
"blia blib bou blf".
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到预期的结果?
如何使用 Google Chrome 或 IE 在网页上搜索“foo|bar”等正则表达式?我知道“正则表达式搜索器”扩展名,但它对我不起作用。(当我点击斜线时什么也没有发生。)网上商店的评论表明这是许多用户的常见问题。
我试图删除以 A 开头并以 2 个数字结尾的文件,但它没有做任何事情。
我试过的:
rm ^A*[0..9]2$
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
我发现这\n在 Mac OS X 下的 sed中不起作用。具体来说,假设我想将由单个空格分隔的单词分成几行:
# input
foo bar
Run Code Online (Sandbox Code Playgroud)
我用,
echo "foo bar" | sed 's/ /\n/'
Run Code Online (Sandbox Code Playgroud)
但结果是愚蠢的,\n是逃不掉的!
foonbar
Run Code Online (Sandbox Code Playgroud)
在向谷歌咨询后,我找到了一个解决方法:
echo 'foo bar' | sed -e 's/ /\'$'\n/g'
Run Code Online (Sandbox Code Playgroud)
看完文章,还是没明白是什么\'$'\n/g'意思。有人可以向我解释一下,或者是否有其他方法可以做到?谢谢!
我曾经通过重命名命令在 Linux 中重命名文件:
rename 's/old_pattern/new_pattern/g' *glob
Run Code Online (Sandbox Code Playgroud)
Mac OS X (Snow Leopard) 中是否有类似的东西?