如何在第一行命令之前在新行中插入总行数?
How to insert total number of lines in a new line before the first line command?
我有成千上万的 .xyz 文件,它们是像这样的化学坐标(例如):
Fe 0.000000000 0.000000000 0.000000000
C 2.112450000 0.000000000 0.000000000
C 0.039817193 1.817419422 0.000000000
我搜索了很多简单的命令,如 sed 或 head 和 tail,以在文件顶部写入计数的行数(用换行符 \n 并在总数前有两个空格)但是无法成功。
我真的很感激任何帮助。
输出必须是这样的:
3
Fe 0.000000000 0.000000000 0.000000000
C 2.112450000 0.000000000 0.000000000
C 0.039817193 1.817419422 0.000000000
您可以将其作为复合命令执行:
(wc -l < fileA && cat fileA) > outputA
请注意,我在那里使用了 <
以确保 wc
不会在第一行打印文件名。至少在 Mac OS 上,如果您不使用那样的重定向,它会起作用。
编辑:如果您需要对多个文件应用相同的内容:
mkdir output
ls *.xyz | while read filename; do
(wc -l < $filename && cat $filename) > output/$filename
done
只是为了好玩,这里有一个您不应该不使用但在某些情况下有效的命令:
tee xxx < fileA | wc -l > xxx # don't do this
试试这个:
sed '1i \
'$(wc -l < file.xyz) file.xyz
要使用 find
处理多个文件并使用 -i
标志 就地 编辑文件:
find . -name '*.xyz' -exec sh -c 'sed -i "1s/.*/$(wc -l < {})\n&/" {}' \;
注意: 由于文件将使用此命令就地编辑,您可能需要先检查输出。为此,请删除 sed
之后的 -i
标志。如果命令满足您的需要,则再次添加 -i
标志。
我有成千上万的 .xyz 文件,它们是像这样的化学坐标(例如):
Fe 0.000000000 0.000000000 0.000000000
C 2.112450000 0.000000000 0.000000000
C 0.039817193 1.817419422 0.000000000
我搜索了很多简单的命令,如 sed 或 head 和 tail,以在文件顶部写入计数的行数(用换行符 \n 并在总数前有两个空格)但是无法成功。 我真的很感激任何帮助。 输出必须是这样的:
3
Fe 0.000000000 0.000000000 0.000000000
C 2.112450000 0.000000000 0.000000000
C 0.039817193 1.817419422 0.000000000
您可以将其作为复合命令执行:
(wc -l < fileA && cat fileA) > outputA
请注意,我在那里使用了 <
以确保 wc
不会在第一行打印文件名。至少在 Mac OS 上,如果您不使用那样的重定向,它会起作用。
编辑:如果您需要对多个文件应用相同的内容:
mkdir output
ls *.xyz | while read filename; do
(wc -l < $filename && cat $filename) > output/$filename
done
只是为了好玩,这里有一个您不应该不使用但在某些情况下有效的命令:
tee xxx < fileA | wc -l > xxx # don't do this
试试这个:
sed '1i \
'$(wc -l < file.xyz) file.xyz
要使用 find
处理多个文件并使用 -i
标志 就地 编辑文件:
find . -name '*.xyz' -exec sh -c 'sed -i "1s/.*/$(wc -l < {})\n&/" {}' \;
注意: 由于文件将使用此命令就地编辑,您可能需要先检查输出。为此,请删除 sed
之后的 -i
标志。如果命令满足您的需要,则再次添加 -i
标志。