if-statement - 在脚本中为特定行长度添加条件
问题描述
我想修改以下脚本:
awk 'NR>242 && $1 =='$t' {print $4, "\t" '$t'}' test.txt > file
我想为第一个“1 到 121”数据(对应于前 121 个点)然后为“122 到 242”数据(对应于其他 121 个点)添加一个条件。
所以它变成:
当 NR>242 取行从 1 到 121 的相应值时,将它们打印到 file1
当 NR>242 将行的相应值从 121 到 242 打印到 file2
谢谢!
解决方案
通用解决方案:在此处添加更多通用解决方案,您可以在其中提供lines
变量awk
。一旦行号与值匹配,它将用 1 增加文件的计数器,例如:从 file1 到 file2 或 file2 到 file3 等等......
awk -v val="$t" -v lines="121,242" -v count=1'
BEGIN{
num=split(lines,arr,",")
for(i=1;i<=num;i++){
line[arr[i]]
outputfile="file"count
}
}
FNR in arr[i]{
close(outputfile)
outputfile="file"++count
}
($1 == val){
print $4 "\t" val > (outputfile)
}
' Input_file
使用您显示的示例,请尝试以下操作。这将从第 1 行到第 242 行的所有行打印到 file1,从第 243 行开始打印输出到 file2。程序还有一个名为的 shell 变量t
传递到awk
程序的变量val
中。
awk -v val="$t" '
FNR==1{
outputfile="file1"
}
FNR==243{
outputfile="file2"
}
($1 == val){
print $4 "\t" val > (outputfile)
}
' Input_file
推荐阅读
- kotlin - kotlin GlobalScope,runBlocking 在 kotlin.coroutines 中不可用。*
- mongodb - 在数据库中查找 5 个唯一的最新文档
- javascript - 如何使用 JavaScript 将 HTML 表单字段值保存到 localStorage?
- xcode - Xcode 调试器中的 Intel 语法汇编
- python - 我的项目使用 Google+ API 登录,现在已弃用,需要提示/建议来更新
- c# - C# 数据表到数组的数组
- html - 管理正在使用的多种字体的明显不同大小
- ruby-on-rails - /posts 处的 ActionController::ParameterMissing 参数丢失或值为空:在 Rails 5.2 上发布
- google-apps-script - Google 表格脚本 - 从驱动器文件夹加载文件
- c - 定义一个函数,其函数名被宏屏蔽