Bash SED:打开/读取目录中的文件
我有一个包含如下文件的目录:Bash SED:打开/读取目录中的文件,bash,unix,sed,Bash,Unix,Sed,我有一个包含如下文件的目录: one.xml two.xml three.xml 等等 我想打开/读取所有文件,并将一些值保存到新文件(例如new.txt) new.txt中的结果应该是(第一行的文件名/值): 等等。您可以使用head获取第一行。以下方面应起作用: for i in *.xml; do echo -n "$(basename "$i" ".xml") "; head -1 "$i" ; done >> new.txt 您可以使用head获取第一行。以下方面应起作
one.xml
two.xml
three.xml
等等
我想打开/读取所有文件,并将一些值保存到新文件(例如new.txt
)
new.txt
中的结果应该是(第一行的文件名/值):
等等。您可以使用
head
获取第一行。以下方面应起作用:
for i in *.xml; do echo -n "$(basename "$i" ".xml") "; head -1 "$i" ; done >> new.txt
您可以使用
head
获取第一行。以下方面应起作用:
for i in *.xml; do echo -n "$(basename "$i" ".xml") "; head -1 "$i" ; done >> new.txt
在find的帮助下,sed可以很好地做到这一点:
find . -maxdepth 1 -type f -name "*.xml" -exec sed -n 1p "{}" ";"
(YMMV关于引用exec的参数)
它的作用是使用
1p
打印每个文件的第一行,并将其与-n
相结合,后者会抑制正常输出,在这种情况下,这将是打印文件的每一行。sed可以很好地完成这项工作,只需使用find:
find . -maxdepth 1 -type f -name "*.xml" -exec sed -n 1p "{}" ";"
(YMMV关于引用exec的参数)
它的作用是使用
1p
打印每个文件的第一行,并将其与-n
相结合,后者会抑制正常输出,在这种情况下,这将是打印文件的每一行。只需编写一个小程序(perl、python、java)<代码>sed在这里有点放错地方,我想。只需编写一个小程序(perl、python、java)<我认为code>sed在这里有点放错地方了。我认为您应该删除for
参数的双引号,使其工作。否则,它将所有文件作为一个参数处理,并且basename
失败。head-1
/tail-1
不推荐使用,建议使用-n1
echo-n
也不可移植,只需使用printf
。别忘了引用$i
,以防万一。@Birei谢谢,修正了。它几乎是正确的。文件扩展名仍为空there@saromba请参见编辑。添加了basename
的后缀。我认为您应该删除for
参数的双引号以使其工作。否则,它将所有文件作为一个参数处理,并且basename
失败。head-1
/tail-1
不推荐使用,建议使用-n1
echo-n
也不可移植,只需使用printf
。别忘了引用$i
,以防万一。@Birei谢谢,修正了。它几乎是正确的。文件扩展名仍为空there@saromba请参见编辑。添加了basename
的后缀。