我无法使此sed命令正常工作。
sed: -e expression #1, char 31: unterminated address regex
如果我将双引号替换为双引号,则会破坏命令的其余部分,并且会出现此错误:
OrderA
-------
userId
orderDate
amount
OrderB
------
userId
orderDate
sample data:
OrderA
1 01/01/2018 100
1 02/01/2018 101
1 03/01/2018 102
OrderB
1 01/01/2018
1 01/10/2018
1 03/01/2018
基本上我正在做的是使用tac向后搜索文件,以便我可以找到以反斜杠开头的前一行并将其分配给变量remote_file_path。
谢谢
答案 0 :(得分:0)
单引号不会扩展变量。双引号可以,但是如果文件名包含斜杠(或sed的其他一些特殊字符),则它可能会破坏表达式。您可以使用其他正则表达式定界符(例如\=$file_name= d
),但前提是您确定文件名永远不能包含它(或其他特殊的sed字符,例如点)。
使用带有变量的真实语言,shell中的变量只是宏;例如,您可以使用Perl:
f=$file_name perl -ne 'next if 1 .. /\Q$ENV{f}/; print, last if /^\\/'
\Q
用$ f文字使所有特殊字符(请参阅quotemeta)。