使用程序名称文件作为输入来获取文件的前5行(Unix)

时间:2018-11-06 16:59:21

标签: shell unix

目标:使用带有文件名列表的输入文件,获取每个文件的前5行,然后输出到另一个文件。基本上,我试图通过读取标题来找出每个程序的作用。

Shell:Ksh

输入:myfile.txt

=A1&"-"&COUNTIF($A$1:$A1,A1)

输出:

tmp/file1.txt
tmp/file2.txt

我可以使用“ head -5”,但是不确定如何从文件中获取输入。我假设我可以重定向(>> output.txt)输出文件的输出。

输入文件名使用相对路径。

更新:我在下面创建了一个脚本,但是出现“语法错误:文件意外结束”。该脚本是使用VI创建的。

! / bin / sh

cat $ HOME / jmarti20.list |边读边 做   #echo $ line“ >> jmarti20.txt   头-n 5 / los_prod / $ line >> $ HOME / jmarti20.txt 完成

2 个答案:

答案 0 :(得分:0)

对,您可以将输出>>附加到文件中。

head -n 5 file1.txt >> file_descriptions.txt

您还可以使用sed上的文档从pinfo sed打印行。

sed 5q file1.txt >> file_descriptions.txt

个人偏爱是将文件描述放在第3行中,并且仅打印文件的第3行。

sed -n 3p file1.txt >> file_descriptions.txt

使用第3行的原因与第一行通常包含#!/ bin / bash之类的“ shebang”有关,而第二行具有本地化字符串(如# -*- coding: UTF-8 -*-)允许在支持它们的终端和文本编辑器中正确显示额外的字符字形和语言。

答案 1 :(得分:0)

下面是我想出的东西,并且看起来效果不错:

#! /bin/sh
cat $HOME/jmarti20.list | while read line
do
  temp=$line
  temp2=$(head -n 5 /los_prod/$line)
  echo "$temp" "$temp2" >> jmarti20.txt
  #echo "$line" >> jmarti20.txt
  #head -n 5 /los_prod/$line >> $HOME/jmarti20.txt
done