从文件中获取描述符

从文件中获取描述符
#!/bin/bash
space='  ';
for dir in ./*/*;
do
    cd $dir
    for line in 38 37 36 35 34 33 32 31 29
    do
    tail -n $line OUTCAR | head -n 1 |awk '{print $NF}'$space >> descriptor
    echo '/t';
    done
    cd ../../
done 

我有 116 个目录,其中存在名为 OUTCAR 的文档。

每个 OUTCAR 彼此不同,OUTCAR 中的总行数可能会有所不同,但有趣的是,我想从每个 OUTCAR 中获取的数量出现在从底部到每行末尾的第 29 到 38 行号处。

我成功地抓住了它们,但我无法在称为描述符的新文档中并排打印它们。

请查看上面的代码并建议所需的更改。

答案1

将新行替换为您想要的分隔符,

tail -n $line OUTCAR | head -n 1 |awk '{print $NF}'$space |tr '\n' '\t' >> descriptor`
  • tr '\n' '\t'将用制表符替换换行符。

echo '/t';并在脚本中删除。

答案2

尝试 - 在循环内 -

tail -n 38 | awk 'NR > 10 {printf ORS; exit} NR != 9 {printf "%s\t", $NF}'

如果您无法忍受尾随字符<TAB>,则必须采取其他措施。

相关内容