2016-09-30 59 views
0

我的要求是將管道分隔文件轉換爲正常的excel。所以我在UNIX中使用了下面的tr命令來執行這個操作。 tr '|' ',' <filename.csv> filename_Final.csv當我執行上述命令時,它將該字段的負號帶到字段末尾。所以我試圖把負面信號帶到前面的字段,我發現正確匹配的UNIX腳本。如果有人遇到類似的情況,請提供幫助。輸入:管道文件在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在文本前面的負號。

+1

這有什麼好做的'tr'。請打開'filename_Final。csv'與文本編輯器,你會看到'1,abc,-123'。 'Excel'會改變負號的位置,因爲你的語言環境區域和語言的默認數字格式已經設置了它。見http://www.solveyourtech.com/change-the-windows-7-negative-number-format/。 –

+1

@Abirami:爲什麼你不能在一篇文章中闡明你的問題,你不必一次性發布相同的問題http://stackoverflow.com/users/6891844/abirami?tab=questions – Inian

回答

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 
+0

嗨,我試過執行上面的腳本並在記事本中打開該文件,但仍然是負號在文本的後面。請幫忙。 – Abirami

+0

請讓我知道腳本,使用tr命令將負號從尾端切換到前端。 – Abirami

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 
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