我想要执行此操作
awk -F, '$1 ~ /F$/' file.dat
关于gziped文件的整个目标
我希望能够循环遍历每个文件解压缩它执行上述命令(打印出任何调查结果)重新压缩并移动到下一个压缩文件
怎么办呢?
由于
答案 0 :(得分:3)
好吧,如果你必须把它全部放在一行:
find . -name \*.gz -print0 | xargs -0 gunzip -c | awk -F, '$1 ~ /F$/'
应该为你工作
答案 1 :(得分:2)
在我看来,您希望输出第一个字段,以逗号分隔的字段列表,以'F'结尾的行
如果你不关心列出哪些.gz文件来自gzipped文件中的哪个.gz文件 - 也就是说,你只想要列出的行 - 你甚至不需要枪杀它们。首先是gz文件,这样你就不必重新压缩它们了。
zcat file.gz | awk -F, '$1 ~ /F$/'
对于当前目录树中的每个文件,请使用带有xargs的find。此示例将其限制为仅当前目录,但只省略“-maxdepth 1”以获取整个目录树
find . -maxdepth 1 -name \*.gz -print0 | xargs -0 zcat | awk -F, '$1 ~ /F$/'
这就是找到以“.gz”结尾的文件,并用NUL终结符(0 in -print0)写出他们的名字,通过xargs输出的管道将根据列表选择列表在NUL字符(“ - 0”arg)上并在文件上运行zcat。通过你的awk命令输出 输出你会得到相关的行。
答案 2 :(得分:0)
shell脚本如何:
gunzip $1.gz
awk -F, '$1 ~ /F$/' $1
gzip $1
请确保$1
没有.gz
扩展名。
然后你可以做类似的事情:
find -name \*.gz -type f|xargs my_shell_script