linux导出并追加到文件,linux – 如何将awk结果输出到文件
输出重定向通常是你正在使用的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结果输出到文件相关推荐
- altium导出钻孔文件_[Altium Designer 学习]怎样输出Gerber文件和钻孔文件
为了资料保密和传输方便,交给PCB厂商打样的资料一般以Gerber和钻孔文件为主,换句话说,只要有前面说的两种文件,就能制作出你想要的PCB了. 一般来说,交给PCB厂商的Gerber有以下几层: G ...
- shell find命令 文件夹查询关键字 查询结果输出新文件
find 是查询文件 xargs 写文件 find ./ -name "*.js" | xargs grep "/paces/" >> ./aa.t ...
- python中把输出结果写到一个文件中_如何将脚本输出写入文件和命令行?
你看不到任何东西的事实可能与缓冲正在发生的事实有关.所以你只能得到每4千分左右的文本输出. 相反,试试这样的方法:class OutputSplitter(object): def __init__( ...
- python ttf svg path_python – 将一系列.svg文件作为字形导入FontForge并输出字体文件...
尝试重建你的Fonforge.因为代码应该工作.我测试了它,运行正常. 我用Homebrew成功安装了Fontforge和Python扩展.这是信息: 06000 设置PYTHONPATH 运行bre ...
- 一文搞懂Linux下的文件的标准输入、标准输出、输出重定向问题
Linux下一切皆文件,所谓的终端那个黑框也可以视为一个文件,在Linux驱动开发中各个设备也可以被认为是文件操作,所以文件的操作很重要.我们通常将键盘叫做标准输入设备.将显示器叫做标准输出设备,下面 ...
- linux将用户移动到用户组,Linux将用户添加到组
Linux将用户添加到组 Linux允许我们将用户添加到特定的用户组.一个用户帐户可以添加到多个组中.例如,具有sudo权限的用户可以访问sudo命令以获得相关权限.此外,我们可以为组配置文件权限和其 ...
- Linux里面根据端口杀进程,Linux 查看端口占用并杀掉进程
SQL Server存储过程多角度介绍 什么是存储过程: 存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合.存储过程存储在数据库内,可由应用程序通过一个调用 ...
- 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 ...
- Allegro输出装配文件、制板文件、钢网文件、结构文件
PCB制作完后,为方便制板及焊接.一个比较完美的生产文件应包含以下部分: 1.*.ASM 文件:为电子装配图文件.焊接厂可能需要. 2.*.CAM 文件:为PCB制版厂所需文件. 3.*.DXF 文件 ...
最新文章
- .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
- Python -itertools模块combinations方法
- war和war exploded区别
- Linux配置Nginx与PHP-FPM出现[error] 80143#0: *1 connect() failed (111: Connection refused) while connectin
- spring转发和重定向
- android imageview 上蒙版,在iOS中为UIImageView的圆形蒙版设置动画
- 【Java】java 实现 线程交替输出
- UI设计灵感|想让用户中心更有特色?这些案例值得借鉴
- intellij idea 忽略文件不提交
- markdown 本地链接_Markdown从入门到入坑
- 引commons-io工具类做文件的复制及导出
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]
- 14.http 304优化,了解客户端缓存
- c#调用microsoft word将word另存为pdf
- linux 显卡 卡死,linux服务器显卡崩溃解决方案
- teamviewer连接不上的原因及解决方法有哪些
- 程序员如何提升自身价值
- WIFI视频传输方案
- ffmpeg通过OpenGL给视频添加下雪特效源码
- 计算机网络之网络应用--DNS应用