我有一个像下面这样的日志文件。
130023432 195047 /media/ismail/SSDWorking/book-collection/_Books/book 1.epub
130023433 195047 /media/ismail/SSDWorking/book-collection/_Books/book 2.epub
130023431 195047 /media/ismail/SSDWorking/book-collection/_Books/book 3.epub
我有一个变量,var=130023432
我想说如果第一个字等于$var
,然后打印除前两个字以外的所有字。
所以,在这种情况下,输出将是:
/media/ismail/SSDWorking/book-collection/_Books/book 2.epub
到目前为止我尝试过的是grep -oP "(?<=$var \d+ ).*$'"
但它给出了错误grep: lookbehind assertion is not fixed length
我怎样才能做到这一点?
你可以用
awk
这个。使用您的示例输出
我避免了
awk -v var="$var" '...'}
构造,因为-v
处理它的反斜杠等值,而环境变量保持不变。如果你真的想走这条路,那么试试这个(不是 POSIX):使用这个简短的
awk
(sub
就像sed
,替换模式或正则表达式):或者简单地:
sed
pcregrep
grep
awk
输出