输出重定向通常是你正在使用的shell的一个特性,并且考虑到它有多少使用,如果你发现了一个bug,我会非常惊讶:-)

你确定你没有尝试用awk本身而不是shell进行重定向吗?

当你这样做时会发生什么:

echo 'hello' | awk '{print}' >qq.tmp

更新:

如果这是你所说的代码,那是因为你的shell脚本没有扩展$a,因为awk命令在单引号内.

for a in $(find $OUPUT_DIR/ -maxdepth 1 -mindepth 1 -type d -printf "%P\n")

do

echo $a is a directory

awk -F, '{ if ($10 == '"$a"') print $0 }' $OUPUT_DIR/CDRNOutput_${CDR_DATE}.csv > $OUPUT_DIR/$a/CDR-${CDR_DATE}.csv

done

我倾向于使用-v选项将特定值传递给awk,类似于(在您的情况下):

awk -F, -v a=$a '{ if ($10==a) print $0 }' ...

然后变量成为一流的awk公民,而不必担心谁在进行扩展.

进一步更新:

我站在原来的建议背后.选择的方法肯定会搞砸.

我的主目录中有一个名为XpVm的目录(以及其他目录),我创建了包含单行的CDRNOutput_X.csv文件:

1,2,3,4,5,6,7,8,9,XpVm,11

当我执行:

for a in $(find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n" | grep -v '^\.')

do

echo $a is a directory

awk -F, '{

if ($10 == '"$a"') {

print $0

} else {

print "NO";

}

}' ./CDRNOutput_X.csv

done

(我已经删除了以.开头的目录,因为它们导致了另一个问题),我得到了这个输出:

workspace is a directory

NO

Documents is a directory

NO

XpVm is a directory

NO

Downloads is a directory

NO

这显然不是预期的.但是,当我按照我最初的建议使用-v选项时,命令:

for a in $(find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n" | grep -v '^\.')

do

echo $a is a directory

awk -F, -v a=$a '{

if ($10 == a) {

print $0

} else {

print "NO"

}

}' ./CDRNOutput_X.csv

done

(唯一的区别是a的变化),我得到:

workspace is a directory

NO

Documents is a directory

NO

XpVm is a directory

1,2,3,4,5,6,7,8,9,XpVm,11

Downloads is a directory

NO

哪个是对的.

最后更新(希望如此):

我想我已经解决了问题.我现在在另一台机器上(所以目录名称只是tmp和tmp2),当我运行原始脚本时:

for a in $(find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n" | grep -v '^\.')

do

echo $a is a directory

awk -F, '{

if ($10 == '"$a"') {

print $0

} else {

print "NO";

}

}' ./CDRNOutput_X.csv

done

使用包含tmp而不是XpVm的修改后的CDRNOutput_X.csv,我得到:

tmp is a directory

NO

tmp2 is a directory

NO

那是因为awk将if语句看作:

if ($10 == tmp) {

(没有引号,因为引号实际上在用于包围目录名称的awk字符串之外).对于名为tmp的awk变量而不是实际的字符串“tmp”,这将测试10美元.你需要的是确保引号在awk脚本中,如:

if ($10 == "tmp") {

并且您可以使用以下脚本执行此操作(仅if行已更改):

#!/bin/bash

for a in $(find . -maxdepth 1 -mindepth 1 -type d -printf "%P\n" | grep -v '^\.')

do

echo $a is a directory

awk -F, '{

if ($10 == "'"$a"'") {

print $0

} else {

print "NO";

}

}' ./CDRNOutput_X.csv

done

请注意,双引号是重复的.我仍然在$a附近保留双引号以防万一有人犯下了创造一个带有空格的文件的令人发指的罪行:-)

运行该脚本会产生:

tmp is a directory

1,2,3,4,5,6,7,8,9,tmp,11

tmp2 is a directory

NO

这就是我认为你的目标.

所以,结果是,如果你不想使用awk变量,你可以改变你的awk字符串:

'{ if ($10 == '"$a"') print $0 }'

至:

'{ if ($10 == "'"$a"'") print $0 }'

它应该运作正常.

linux导出并追加到文件,linux – 如何将awk结果输出到文件相关推荐

  1. altium导出钻孔文件_[Altium Designer 学习]怎样输出Gerber文件和钻孔文件

    为了资料保密和传输方便,交给PCB厂商打样的资料一般以Gerber和钻孔文件为主,换句话说,只要有前面说的两种文件,就能制作出你想要的PCB了. 一般来说,交给PCB厂商的Gerber有以下几层: G ...

  2. shell find命令 文件夹查询关键字 查询结果输出新文件

    find 是查询文件 xargs 写文件 find ./ -name "*.js" | xargs grep "/paces/" >> ./aa.t ...

  3. python中把输出结果写到一个文件中_如何将脚本输出写入文件和命令行?

    你看不到任何东西的事实可能与缓冲正在发生的事实有关.所以你只能得到每4千分左右的文本输出. 相反,试试这样的方法:class OutputSplitter(object): def __init__( ...

  4. python ttf svg path_python – 将一系列.svg文件作为字形导入FontForge并输出字体文件...

    尝试重建你的Fonforge.因为代码应该工作.我测试了它,运行正常. 我用Homebrew成功安装了Fontforge和Python扩展.这是信息: 06000 设置PYTHONPATH 运行bre ...

  5. 一文搞懂Linux下的文件的标准输入、标准输出、输出重定向问题

    Linux下一切皆文件,所谓的终端那个黑框也可以视为一个文件,在Linux驱动开发中各个设备也可以被认为是文件操作,所以文件的操作很重要.我们通常将键盘叫做标准输入设备.将显示器叫做标准输出设备,下面 ...

  6. linux将用户移动到用户组,Linux将用户添加到组

    Linux将用户添加到组 Linux允许我们将用户添加到特定的用户组.一个用户帐户可以添加到多个组中.例如,具有sudo权限的用户可以访问sudo命令以获得相关权限.此外,我们可以为组配置文件权限和其 ...

  7. Linux里面根据端口杀进程,Linux 查看端口占用并杀掉进程

    SQL Server存储过程多角度介绍 什么是存储过程: 存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合.存储过程存储在数据库内,可由应用程序通过一个调用 ...

  8. linux的x64与x86_在Linux x86 64机器上链接

    linux的x64与x86 Linking is the process of combining various pieces of code and files in order to const ...

  9. Allegro输出装配文件、制板文件、钢网文件、结构文件

    PCB制作完后,为方便制板及焊接.一个比较完美的生产文件应包含以下部分: 1.*.ASM 文件:为电子装配图文件.焊接厂可能需要. 2.*.CAM 文件:为PCB制版厂所需文件. 3.*.DXF 文件 ...

最新文章

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
  2. Python -itertools模块combinations方法
  3. war和war exploded区别
  4. Linux配置Nginx与PHP-FPM出现[error] 80143#0: *1 connect() failed (111: Connection refused) while connectin
  5. spring转发和重定向
  6. android imageview 上蒙版,在iOS中为UIImageView的圆形蒙版设置动画
  7. 【Java】java 实现 线程交替输出
  8. UI设计灵感|想让用户中心更有特色?这些案例值得借鉴
  9. intellij idea 忽略文件不提交
  10. markdown 本地链接_Markdown从入门到入坑
  11. 引commons-io工具类做文件的复制及导出
  12. ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]
  13. 14.http 304优化,了解客户端缓存
  14. c#调用microsoft word将word另存为pdf
  15. linux 显卡 卡死,linux服务器显卡崩溃解决方案
  16. teamviewer连接不上的原因及解决方法有哪些
  17. 程序员如何提升自身价值
  18. WIFI视频传输方案
  19. ffmpeg通过OpenGL给视频添加下雪特效源码
  20. 计算机网络之网络应用--DNS应用

热门文章

  1. CentOS5.8下varnish-2.1.5的安装配置
  2. 安全挑战和SD-WAN解决方案
  3. 服务器和云服务器的安全性哪个更好?—Vecloud
  4. 博客作业03--栈和队列
  5. JavaScript和快速响应的用户界面
  6. JDK自带线程池介绍及使用环境
  7. Spring AOP 的proxy详解
  8. HttpClient基础教程
  9. sublime Text 2 安装Sublime Package Control
  10. flash mini播放器