#!/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>
,则必须采取其他措施。