shell - 在文件中取 2 列并递归替换它
问题描述
我在一个目录中有 n 个文件以 .dat 的形式存储,我只需要在每一列中取前两列并删除原始列。
我是为一个文件做的
awk '{print $1,$2}' Test.dat > Test.dat.col
rm Test.dat
rename 's/.dat.col/.dat/' Test.dat.col
我怎样才能递归呢?
我在第一部分的失败尝试find *.dat -printf "awk '{print $1,$2}' > \"%f.col\" | sh
解决方案
如果你有 GNUawk
最新版本,你可以这样做。
awk -i inplace '{print $1,$2}' *.dat
通用解决方案:如果您没有最新版本的 GNUawk
,请尝试遵循。
awk -v temp="temp" '
FNR==1{
if(file){
close(temp)
system("mv \047" temp "\047 \047" file "\047")
}
file=FILENAME
}
{
print $1,$2 > (temp)
}
' *.dat
推荐阅读
- wordpress - WP All Import 插件 - 设置永久链接页面
- jquery - 如何将 jquery datepicker 与 django admin simplelist 过滤器一起使用
- c# - 读取具有下拉列表中所有单元格值的 excel 列
- r - R 相当于 proc genmod 中的 SAS 'estimate' 语句
- java - “GlassFish 需要 Java SE 版本 6。您的 JDK 是版本 0”
- postgresql - postgres视图pg_setting中max_wal_size的单位是什么
- python - SQLAlchemy 近似计数而不进行查询
- python - tkinter:查找小部件的可选参数
- python - plotnine中离散x轴的倒序
- c# - 如何使用 Xamarin Android 中的意图从画布板移动到另一个屏幕