unix 使用ksh脚本将两列转换为列式数据[已关闭]

1hdlvixo  于 2023-10-18  发布在  Unix
关注(0)|答案(1)|浏览(167)

已关闭此问题为not about programming or software development。它目前不接受回答。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
2个月前关闭。
Improve this question
我有一个静态格式的文件如下。

column|Data

范例:

Name|Joe
Surname|Robinson
Country|US
Gender|Male

我期待下面的输出使用ksh脚本

Name|Surname|Country|Gender
Joe|Robinson|US|Male

请建议我可以使用什么方法。

nhjlsmyf

nhjlsmyf1#

您期望的是ksh解决方案。
由于kshsh兼容,因此sh脚本也很合适。此外,它最大限度地提高了便携性:

#!/bin/sh
# Expects the data file as first parameter.

for input in $(cat $1); do
    header="${header}|${input%|*}"
    data="${data}|${input#*|}"
done
echo ${header#*|}
echo ${data#*|}

如果你喜欢使用管道,@Fravadona的建议是你的脚本:

#!/bin/sh
# Accepts the data from pipe

while IFS='|' read -r key value; do
    header="${header}|${key}"
    data="${data}|${value}"
done
echo ${header#*|}
echo ${data#*|}

相关问题