shell 使用参数将竖线文本文件转换为csv文件

yzckvree  于 2022-11-16  发布在  Shell
关注(0)|答案(3)|浏览(200)

我尝试了几种方法,根据文件的内容将带有列的文本转换为摘要csv文件,但我做不到。
记录不以逗号开头=第一列开头有逗号的记录=与第一列连接
当您找到下一个开头没有逗号的记录时,请从另一行开始
要行程的文字档:

08-ipa_group
,evouth.zip
,zipe.zip
,auth-service.zip
18-ws-api_group
,mocks.zip
,auth-service.zip
,a-service.zip

输出量

08-ipa_group,evouth.zip,zipe.zip,auth-service.zip
18-ws-api_group,mocks.zip,auth-service.zip,a-service.zip
4xrmg8kj

4xrmg8kj1#

使用awk:

awk -v ORS= '
/^[^,]/ {
  eol()
}
END {
  eol()
}
function eol() {
  if (NR > 1)
    print "\n"
}
1' file
p5cysglq

p5cysglq2#

下面是一个非常简单的shell脚本:

  • 创建空字符串变量line和row
  • 将输入文件逐行读入var行
  • 如果该行以逗号(... | grep '^,')开头,则将其附加到var行
  • else(它是第一列的行),所以对row执行一些操作
  • 如果row不为空(其初始状态),则回显并将其附加到output.csv
  • 否则设置为第一列数据
  • 最后,追加行
rm -rf output.csv

line=''
row=''

while read -r line; do
    [ "$line" = '' ] && continue          # skip blank lines

    if echo "$line" | grep -q '^,'; then  # a "comma" line
        row="${row}${line}"
    else                                  # a "first-col" line
        if [ "$row" != '' ]; then         # row is not in initial state
            echo "$row" >> output.csv
        fi
        row="$line"
    fi
done < input.txt

echo "$row" >> output.csv
42fyovps

42fyovps3#

ed是否可用/可接受。
脚本script.ed
第一个

相关问题