我需要用逗号替换文本中的所有空格。我目前正在使用这一行,但它不起作用:我得到一个与原始文件完全相同的文本文件作为输出:
sed 's/[:blank:]+/,/g' orig.txt > modified.txt
Run Code Online (Sandbox Code Playgroud)
谢谢
我想让 bash 从一个随机的短字符串中解析/提取一个完整的 URL(并且只有 url)。
例子:
bob, the address is http://www.google.com
Run Code Online (Sandbox Code Playgroud)
或者
https://foo.com/category/example.html is up
Run Code Online (Sandbox Code Playgroud)
或者
Error 123 occurred at http://bit.ly/~1223456677878
Run Code Online (Sandbox Code Playgroud)
或者
Stats are up: https://foo1234.net/report.jpg
Run Code Online (Sandbox Code Playgroud)
我尝试使用,cat foo_output | egrep -o "https?://[\w'-\.]*\s"但这似乎不起作用。
Fedora文档说:
5.2. 高级搜索
如果您不知道包的名称,请使用搜索或提供选项。或者,在任何 yum 搜索选项中使用通配符或正则表达式来扩大搜索条件。
好吧,起初我认为这完全是错误的或过时的,因为没有已知的正则表达式语法适用于yum search,但后来我发现了这一点:yum search [cl-*]例如。但它做了一些超凡脱俗的事情。它查找名称或描述中既没有“c”也没有“l”字母的事物。(我想要的是找到所有包,其名称将由正则cl-.*表达式匹配。
我还发现很少有人建议将 yum 结果通过管道传输到grep,这当然解决了问题。但是,原则上,我想找出方括号中的内容做了什么。如果yum实际上可以通过正则表达式搜索怎么办?
我有一堆输出通过 sed 和 awk。
如何使用 START 为输出添加前缀并使用 END 为答案添加后缀?
例如,如果我有
All this code
on all these lines
and all these
Run Code Online (Sandbox Code Playgroud)
我怎么能得到:
START
All this code
on all these lines
and all these
END
Run Code Online (Sandbox Code Playgroud)
?
我的尝试是:
awk '{print "START";print;print "END"}'
Run Code Online (Sandbox Code Playgroud)
但我得到了
...
START
All this code
END
START
on all these lines
END
START
and all these
END
Run Code Online (Sandbox Code Playgroud) 为什么echo ,,, |sed s':\(,\)\(,\):\1*\2:'gyield " ,*,," 而不是 " ,*,*,"?换句话说:为什么尽管有“g”标志,sed 不会*在一对逗号之间插入 ' '?
我使用RegEx Buddy来设计和调试我的正则表达式。RegEx Buddy 允许我在许多不同的正则表达式引擎类型(.NET、Java、Perl、GNU BRE、GNU ERE、POSIX、BRE、POSIX ERE 等)之间进行选择。
bash 使用什么正则表达式引擎(例如 inif和casestatements)?我正在运行 Centos 5.5 32 位和 bash 3.2.25(1):
[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
我猜它会是 GNU BRE 还是 GNU ERE?
我想列出(或删除,或执行其他操作)某个目录中的某些文件,如下所示:
$ ls /opt/somedir/
aa bb cc aa.txt bb.txt cc.txt
$ ls /opt/somedir/(aa|bb|cc) ## pseudo-bash :p
aa bb cc
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点(不先 cd 到目录)?
我最近在命令行上遇到了一些正则表达式的问题,发现为了匹配反斜杠,可以使用不同数量的字符。这个数字取决于用于正则表达式的引用(无、单引号、双引号)。请参阅以下 bash 会话以了解我的意思:
echo "#ab\\cd" > file
grep -E ab\cd file
grep -E ab\\cd file
grep -E ab\\\cd file
grep -E ab\\\\cd file
#ab\cd
grep -E ab\\\\\cd file
#ab\cd
grep -E ab\\\\\\cd file
#ab\cd
grep -E ab\\\\\\\cd file
#ab\cd
grep -E ab\\\\\\\\cd file
grep -E "ab\cd" file
grep -E "ab\\cd" file
grep -E "ab\\\cd" file
#ab\cd
grep -E "ab\\\\cd" file
#ab\cd
grep -E "ab\\\\\cd" file
#ab\cd
grep -E "ab\\\\\\cd" file
#ab\cd
grep -E "ab\\\\\\\cd" file
grep -E 'ab\cd' file
grep …Run Code Online (Sandbox Code Playgroud) 我有一个媒体服务器,其中有一个名为Series. ( /media/Expansion2/Series/)
在里面,我有(惊喜!)电视剧。这些只是节目名称,例如,/media/Expansion2/Series/The Big Bang Theory/
在每个节目的文件夹内(这就是问题所在)我有季节文件夹。我目前混合了以下两种约定(可能还有更多约定):
/media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1/media/Expansion2/Series/The Big Bang Theory/Season 2最后,我想将所有文件夹重命名为Season #.
作为正则表达式,我可能会说类似的话 s/.*(Season \d)/$1
仅适用于文件夹,不适用于文件。我可能还应该提到这是用于大约 50 多个显示子文件夹,因此它需要从/media/Expansion2/Series/级别开始并查看每个系列:)