arm*_*dfp 2 linux bash awk grep sed
我在linux目录中有很多文件,带有一些目录的纯文本,我想搜索所有这些文件并获得" - ("和")之间的字符串 - "如:
bbbfb da bg - (fdsd) - fgfjmui - (juju gfdgf b) - fsdf sdfs dsfdlk,kwwk
xwpv - (64fsdfds) - fsdfsd - (a) - fsdfsd ...
并返回:
我读了一段时间,我发现像grep这样的命令,但我尝试了,我认为该命令返回完全字符串,只是逐行:
grep -Rn "-(" *
Run Code Online (Sandbox Code Playgroud)
我也尝试过sed命令:
sed -e 's/.*-(\([^"]*\))-.*/\1/'
Run Code Online (Sandbox Code Playgroud)
返回所有的行,模式在哪里,只有里面的字符串 - (和) - ,但还不是很正确.
我读到了关于awk的问题,但我的问题是:有可能用grep,sed或awk吗?还有一些东西可以用于sed命令吗?(我对此有点新意见)还有另外一个命令吗?或者我想的另一个想法就是制作一个小c程序来读取char中的char文件
grep -RPo '(?<=-\()[^)]*(?=\)-)' yourDir
Run Code Online (Sandbox Code Playgroud)
这将为您提供每行所需的字符串
用你的例子测试:
kent$ echo "bbbfb da bg -(fdsd)- fgfjmui -( juju gfdgf b)- fsdf sdfs dsfdlk,kwwk xwpv -(64fsdfds)- fsdfsd -(a)- fsdfsd..."|grep -Po '(?<=-\()[^)]*(?=\)-)'
fdsd
juju gfdgf b
64fsdfds
a
Run Code Online (Sandbox Code Playgroud)
这里的技巧是"o":来自grep的手册页:
-o, - only-matching仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上.
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |