我的要求是将管道分离文件转换为普通的excel。所以我在UNIX中使用了以下tr命令来执行此操作。 tr '|' ',' < filename.csv > filename_Final.csv
当我执行上述命令时,它会将字段的负号带到字段结尾。所以我试着把负号带到字段前面,我找到了正确匹配的UNIX脚本。如果有人遇到类似的情况,请帮助。输入:管道文件
1|abc|-123
2|def|456
3|ijk|789
tr执行后
tr '|' ',' < filename.csv > filename_Final.csv
输出:管道文件分为普通列。执行tr命令后,管道分隔文本被分隔为excel,但它会在文本后面带来负号。
我需要在文本前面使用负号并执行相同的管道分隔文件转换为excel。
1 abc 123-
2 def 456
3 ijk 789
我的要求是将管道分隔文本转换为excel,并在文本前面添加负号。 输入
1|abc|-123
2|def|456
3|ijk|789
预期输出
1 abc -123
2 def 456
3 ijk 789
请帮助将管道分隔文本转换为excel,并在文本前添加负号。
答案 0 :(得分:0)
您的tr
来电按预期工作。您确定在生成的csv文件中有123-
吗?难道只是Excel表示负值吗?请在文本编辑器中检查您的csv文件。
我试过你的例子:
# cat test
1|abc|-123 2|def|456 3|ijk|789
# cat test | tr '|' ','
1,abc,-123 2,def,456 3,ijk,789
答案 1 :(得分:0)
示例输入:
cat csv
1|abc|-123
2|def|456
3|ijk|789
awk
解决方案:
awk -F'|' -v OFS="\t" '{$1=$1}1' csv
1 abc -123
2 def 456
3 ijk 789
要在csv
中进行更改:如果您的awk支持就地编辑,请使用-i
其他:
awk -F'|' -v OFS="\t" '{$1=$1}1' csv >csv.tmp && mv csv.tmp csv
或旧的tr
:
tr '|' '\t' <csv
1 abc -123
2 def 456
3 ijk 789
答案 2 :(得分:0)
我的要求是将管道分离的文件转换为普通的Excel
您可以使用管道在Excel中打开文件,然后使用数据►文本到列向导将其拆分为列,并指定如何处理尾随减号。
或者,您可以使用数据►从文本中获取外部数据►选项,这也将打开向导。
或者您可以使用VBA例程
Option Explicit
Sub GetUnixFile()
Dim sFile
sFile = Application.GetOpenFilename("Text Files (*.txt; *.csv), *.txt; *.csv")
If sFile = False Then Exit Sub
Workbooks.OpenText sFile, _
startrow:=1, _
DataType:=xlDelimited, _
textqualifier:=xlTextQualifierDoubleQuote, _
consecutivedelimiter:=False, _
Tab:=False, semicolon:=False, comma:=False, Space:=False, _
other:=True, otherchar:="|", _
trailingminusnumbers:=True
End Sub