将文件的所有内容分别加载到单个文件中

时间:2017-06-26 15:02:20

标签: linux unix

我有一份包含员工数据" Emp.txt"

的文件
EMPNO   ENAME    JOB        MGR      SAL    COMM  DEPTNO  Date

7499     ALLEN    SALESMAN    7698   1600    300    30     Null

.....(more 50 records)........

我想将每条记录加载到保存为" Empno.Ename"的新文件中。脚本还应检查文件在创建之前是否存在于路径中。如果存在,脚本应读取文件中的数据并使用当前时间戳更新日期列。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我认为你可以尝试awk这样的事情。 这样的事情怎么样?:

awk '{x=$2; print > x}' file.txt

您也可以进一步格式化输出。

答案 1 :(得分:0)

使用POSIX Shell

您可以从文件的非常简单的读取开始,将值读入numname,将其余部分读入rest变量,然后验证每个变量不为空并将整行重定向到由"$num.$name"组成的文件中。只需一个简单的循环:

while read -r num name rest; do
    if test -n "$num" -a -n "$name" -a -n "$rest"
    then
        echo "$num $name $rest" > "$num.$name"
    fi
done < filename

(如果您的read版本没有-r,请忽略它)

如果需要,您还可以添加计数器以跳过任何标题行。如果您需要保留空格,您可以将整行读入单个变量(例如$line),然后从{{1}解析numname使用参数扩展和子串删除并执行验证,然后将原始$line写入从$line创建的文件名。

使用AWK

您可以使用"$num.$name"执行相同的操作。要将awknum字段合并为一个变量,您可以使用,例如name。然后,将每行写入单独的x=$1"."$2文件,您可以使用类似于:

的内容
num.name

awk '{x=$1"."$2; print > x}' filename 也有跳过标题行等的规定。