我有以下文本文件
1
2
3
4
5
我希望文件内容采用以下方式
1,2,3,4,5
我该怎么做呢?
我有以下数据文件:
DATE: 2015-11-30
TIME: 13:15:00
Charge Remaining (mAh): 4828
Full Charge Capacity (mAh): 5634
我希望按此顺序排列数据 -
Date,Time,'Charge Remaining','Full Charge Capacity'
所以,输出应该是:
2015-11-30,13:15:00,4828,5634
答案 0 :(得分:1)
tr '\n' ',' < text-file | sed 's/,$//'
用逗号替换所有换行符;用'nothing'替换最终的逗号(实际上是换行符)。
处理更复杂的数据时,您希望每行上的最后一个字段作为CSV样式输出中的字段。使用awk
加上之前的脚本很容易:
awk '{ print $NF }' text-file | tr '\n' ',' | sed 's/,$//'
答案 1 :(得分:1)
您可以使用简短的shell脚本来读取数据文件并输出逗号分隔值。如果选择:
,可以将输出重定向到新文件#!/bin/bash
declare -i cnt=0;
while read -r line; do
[ "$cnt" -eq 0 ] && printf "%s" "${line##*: }" || printf ",%s" "${line##*: }"
((cnt++))
done < "$1"
printf "\n"
<强>输入强>
$ cat dat/charge.txt
DATE: 2015-11-30
TIME: 13:15:00
Charge Remaining (mAh): 4828
Full Charge Capacity (mAh): 5634
<强>输出强>
$ bash rfmtcharge.sh dat/charge.txt
2015-11-30,13:15:00,4828,5634
如果您想在单行脚本中使用它,可以使用:
( declare -i cnt=0; while read -r line; do [ "$cnt" -eq 0 ] && printf "%s" "${line##*: }" || printf ",%s" "${line##*: }"; ((cnt++)); done < dat/charge.txt; printf "\n" )
注意:单行脚本包含在( ... )
中,以便在子shell中执行。