linux - 终端 vs. 中的命令bash.sh

标签 linux bash awk

<分区>

我有一个命令和管道进入不同的条件如下,

cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}'

此命令在终端中完美运行

但是, 当我将命令包含在 bash.sh 中时,它根本不起作用。 我创建了一个 test.sh 脚本看起来像这样:

#!/bin/bash     
txt=file.txt
cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}' >> output.txt

然后,我简单地使用

sh test.sh

它生成了一个output.txt,但这不是output.txt中的任何信息

有人知道有什么不同吗?

最佳答案

很可能 sh 不是 bash - 作为 bash test.sh 运行 - $'\t' 是 bash,可能在其他 shell 中不起作用 - 还有 awk -F'\t' 同样有效

关于linux - 终端 vs. 中的命令bash.sh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39097180/

相关文章:

linux - 来自 Cython 的 syscall 或 gettid 系统函数

linux - Bash kdialog 输入框没有关闭?来自 msgbox 的可能错误返回

awk - 使用 awk 打印排序输出以避免管道排序命令

linux - 在目录中一个一个地循环文件,并在屏幕上显示对它们执行命令的结果

linux - 单个 bash 行中的嵌套命令

linux - 在命令行中将 CFLAGS 传递给 Makefile

bash - 如何将字符串转换为修改后的十六进制表示?

linux - 如何将多行 bash 代码粘贴到终端并一次运行?

linux - awk 如何提取其他字段 "if duplicates in fields"仅当先前字段相同且大于零时

shell - 如何在管道分隔文件中使用 awk 命令从文件中仅获取奇数条目?