Spe*_*omb 24 grep bash shell-script
我在尝试编写 Bash 脚本时遇到了问题。当grep输出时,它返回(通常)多行。我想为每个输出行添加一个字符串的前缀和后缀。
我还想指出,我正在ls输入grep,例如:
ls | grep
Run Code Online (Sandbox Code Playgroud)
Cyr*_*rus 38
使用 sed:
ls | grep txt | sed 's/.*/prefix&suffix/'
Run Code Online (Sandbox Code Playgroud)
与sed:
ls | grep pattern | sed -e 's/^/prefix/' -e 's/$/suffix/'
Run Code Online (Sandbox Code Playgroud)
但是请注意,这会受到带有换行符的文件名的问题,以及解析的所有各种问题,ls这通常是一个坏主意。
用 perl
perl -e 'print "prefix".$_."suffix\n" for grep { m/somepattern/} glob "*"'
Run Code Online (Sandbox Code Playgroud)
注意 - perlgrep可以采用模式 - 就像grep命令一样,但您也可以执行诸如应用文件测试之类的操作。
例如
grep {-d} glob "*" #filters directories.
grep { (stat)[9] > time() - 60 } glob "*" #reads file mtime and compares.
Run Code Online (Sandbox Code Playgroud)
在grep默认迭代器$_内设置为当前元素值,因此您可以应用sed/grep样式正则表达式,或基于$_.