操縱從文件輸出我有文件中UNIX用awk
a,b,c,d
e,f,g,h
u,v,x,y
,我想打印的第一關口和所有其他山坳它seperatly
即
a,b
a,c
a,d
e,f
e,g
e,h
等。
在此先感謝
操縱從文件輸出我有文件中UNIX用awk
a,b,c,d
e,f,g,h
u,v,x,y
,我想打印的第一關口和所有其他山坳它seperatly
即
a,b
a,c
a,d
e,f
e,g
e,h
等。
在此先感謝
這可能與此Perl的一個班輪
perl -F, -anle '[email protected];print"$first,$_"[email protected]' <input.txt
它是如何工作要做:
瞭解交換機只需鍵入perl -h
-a
結合-F,
:劈叉(缺省變量)輸入與,
合併(陣列用於自動分離)@F
-n
:loop通過線-l
:線行的處理格格端和打印後添加新行-e
:內嵌程序有關特殊的變量和函數信息,請參閱perldoc perlvar
和perldoc perlfun
謝謝,完美的答案 –
如果你在將來面對這樣的問題,我會建議你試着開始GAWK: Effective AWK Programming by Arnold D. Robbins。
至於答案,這是非常簡單的Awk
!
awk 'BEGIN{FS=OFS=","}{for(i=2;i<=NF;i++) print $1,$i}' file
根據需要產生輸出。
a,b
a,c
a,d
e,f
e,g
e,h
u,v
u,x
u,y
Awk
作品通過一次處理輸入線一個。並且有Awk
提供的特殊子句,BEGIN{}
和END{}
,它包含了在文件處理之前和之後運行的動作。
所以文件處理髮生之前的部分BEGIN{FS=OFS=","}
設置,並FS
和OFS
在Awk
特殊變量,代表輸入和輸出的字段分隔符。既然你提供的由,
去限制一個文件,你需要通過設置FS=","
也將其打印回.csv
格式需要設置OFS=","
命令的主要部分來自後BEGIN
子句來解析它,它有一個循環的for循環,直到當前的行(這裏的NF
的值是4)的最大字段數。一旦設置了適當的解除限制器,您可以通過$1
,$2
.. $NF
訪問各個字段。
環路我開始在$2
即從2 第二去限制記錄到最後一個記錄和循環的作用部分開始被打印1 ST場和任何字段中環遇到用$i
表示。每個print
操作都會以新行打印值。所以隨着你在循環中的進展,你可以按照預期打印字段。
你爲自己嘗試了什麼? _和_爲什麼在'e,g'記錄後有'''? – Inian
因爲我有麻煩,爲什麼我會問這個問題,並且因爲這是一個微不足道的錯字 –
@AbBennett是的,據瞭解,你問這個問題是因爲你被困在問題中......但是關於獲得幫助用你已經試過的代碼,而不是詢問完整的代碼... – Sundeep