我有一行代码,如下所示:
grep -f <(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' ) fileB.txt > fileC.txt
当我在终端上运行它时它正在工作,但是当我将它添加到 *.sh 脚本中时它会出现以下错误:
format_input.sh: line 12: syntax error near unexpected token `('
我试图像这样逃避 () :
grep -f <\(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' \) fileB.txt > fileC.txt
但是,我仍然遇到某种错误:
format_input.sh: line 12: (awk: No such file or directory
sed: ): No such file or directory
我究竟做错了什么?
答案1
我不确定这是否是正确的答案,但我想包含比注释更多的代码。我的猜测是您使用非 Bash shell 来启动format_input.sh
.我用更简单的线路对此进行了测试。该文件file
包含以下内容:
$ cat file
content
more content
this is a line
another one
这是我从命令行进行的测试:
$ grep ON <(tr '[a-z]' '[A-Z]'< file)
CONTENT
MORE CONTENT
ANOTHER ONE
我将此行放入我命名的脚本中script
并按如下方式启动它:
$ bash script
CONTENT
MORE CONTENT
ANOTHER ONE
$ sh script
script: line 1: syntax error near unexpected token `('
script: line 1: `grep ON <(tr '[a-z]' '[A-Z]'< file)'
(这是在 Cygwin 上,但我认为特定平台并不重要)