代码
sed -n 's/.*tex:/[preventColonFromResult]/p' ./BitTorrentSync/Gyn/1.12.2015.tex: Agents in young <40yr?
Run Code Online (Sandbox Code Playgroud)
在哪里
./BitTorrentSync/Gyn/1.12.2015.tex: Agents in young <40yr?。./BitTorrentSync/Gyn/1.12.2015.tex。我认为-n这里没有意义,因为我想将输出传递给less. 我搜索了匹配项,.*tex:但它实际上不应该包含:在结果中。我坚持p到底不做更换。
grep试图在结肠分裂:与grep不的种子sed/ grep/ ...代码在GNU grep的2.23
find . -name "*.tex" -exec ggrep -i -oP '^[^:]*(?=:)' {} \; | less
Run Code Online (Sandbox Code Playgroud)
不成功的输出,输出为文件内容,而不是文件名。这个命令实际上只包含文件的内容,它不在文件名之外。
如何:在 SED/Grep/... 中的冒号之前获得所有内容?
sed操作标准输入,而不是它的参数,除非你给它文件名。sed。代替
sed -n 's/.*tex:/[preventColonFromResult]/p' ./BitTorrentSync/Gyn/1.12.2015.tex: Agents in young <40yr?
Run Code Online (Sandbox Code Playgroud)
也许你的意思是
printf '%s\n' './BitTorrentSync/Gyn/1.12.2015.tex: Agents in young <40yr?' | sed 's/:.*//'
Run Code Online (Sandbox Code Playgroud)
但是对于这个特定的用例,您不妨只使用一个单一用途的工具,即cut:
printf '%s\n' './BitTorrentSync/Gyn/1.12.2015.tex: Agents in young <40yr?' | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)