paste <(pgrep -f tomcat) <(pgrep tomcat)
时间: 2023-12-04 16:03:47 浏览: 31
这个命令会将运行着名字中带有 `tomcat` 的所有进程的 PID 和父进程 PID 合并到一个新的表格中输出。其中:
- `pgrep -f tomcat` 会查找所有名字中带有 `tomcat` 的进程,并输出它们的 PID。
- `pgrep tomcat` 会查找所有名字为 `tomcat` 的进程,并输出它们的 PID。
`<(command)` 语法会将一个命令的输出作为一个文件输入到另一个命令中。`paste` 命令会将两个输入文件按列合并到一个表格中输出。因此,`paste <(pgrep -f tomcat) <(pgrep tomcat)` 命令会将这两个命令的结果合并到一个表格中输出。
相关问题
paste <(pgrep -f tomcat) <(pgrep tomcat)会多出一个未知id
这是因为 `paste` 命令会将两个输入文件的每一行合并成一行,并且中间用制表符分隔。而如果两个输入文件的行数不同,`paste` 命令就会在行数较少的文件末尾添加空白行,以便与行数较多的文件对齐。这就是为什么你会看到一个未知的 ID,它实际上是一个空白行,对应于第一个输入文件中不存在的进程 ID。要解决这个问题,你可以使用 `paste -d'\n'` 命令将结果的行分隔符修改为换行符,这样就不会出现多余的空白行了。
library(terra) path1 <- dir('G:/ERA5hr/SVWL1/1/',pattern = '*.tif',full.names = T)#导入地址后批量合并 path2 <- raster('G:/ERA5hr/Fw/a/a.tif') path3 <- raster('G:/ERA5hr/Fw/b/b.tif') path4 <- raster('G:/ERA5hr/Fw/wr/wr.tif') #nc5 <- stack(paths) for (i in 1:length(path1)){ print(path1[i]) sw <- stack(path1[i]) a <- path2 b <- path3 wr <- path4 df_a <- as.matrix(a) df_b <- as.matrix(b) df_wr <- as.matrix(wr) df_sw <- as.matrix(sw) old_matrix <- df_sw df_sw <- matrix(old_matrix, nrow = 125, ncol = 265) file_data <- ifelse(is.na(df_sw), 0, ifelse(df_sw < df_wr, 1, sqrt(1 + df_a * (df_sw - df_wr) ^ df_b))) result <- sw result <- setValues(result, file_data) output_path <- paste('G:/ERA5hr/Fw/1/', substr(path1[i],19,32),'.tif',sep='') writeRaster(result,output_path, overwrite=TRUE,format = "GTiff") }请检查一下参数问题
在你的代码中,你使用了 `path2`、`path3`和`path4`作为模板来创建新的栅格图层。但是,在循环中,你没有更新这些模板图层,而是一直使用了最初的图层。另外,你在将栅格数据转换为矩阵时,没有指定数据类型,这可能导致数据类型不匹配和错误。
以下是修复后的代码:
```
library(terra)
# 导入地址后批量合并
path1 <- dir('G:/ERA5hr/SVWL1/1/',pattern = '*.tif',full.names = T)
path2 <- rast('G:/ERA5hr/Fw/a/a.tif')
path3 <- rast('G:/ERA5hr/Fw/b/b.tif')
path4 <- rast('G:/ERA5hr/Fw/wr/wr.tif')
for (i in 1:length(path1)) {
print(path1[i])
sw <- rast(path1[i])
# 更新模板图层
a <- path2
b <- path3
wr <- path4
# 将栅格数据转换为矩阵并指定数据类型
df_a <- as.matrix(a, dataType = 'FLT4S')
df_b <- as.matrix(b, dataType = 'FLT4S')
df_wr <- as.matrix(wr, dataType = 'FLT4S')
df_sw <- as.matrix(sw)
old_matrix <- df_sw
df_sw <- matrix(old_matrix, nrow = 125, ncol = 265)
file_data <- ifelse(is.na(df_sw), 0, ifelse(df_sw < df_wr, 1, sqrt(1 + df_a * (df_sw - df_wr) ^ df_b)))
result <- sw
result <- setValues(result, file_data)
output_path <- paste('G:/ERA5hr/Fw/1/', substr(path1[i],19,32),'.tif',sep='')
writeRaster(result,output_path, overwrite=TRUE, format = "GTiff")
}
```
现在,你应该能够成功执行你的代码了。