ファイル行から列への変換

ファイル行から列への変換

ファイルがあるとしましょう。

ファイル1:

PAPER  TEAM  MANISH NISHA GARIMA JYOUTI ........etc 

ファイル2私が欲しいもの:

PAPER    
TEAM
MANISH
NISHA
GARIMA    
JYOUTI

File1の行から列への変換。

答え1

tr繰り返される各空白文字()を単一の改行文字()に置き換えるために使用します\n

tr -s ' '  '\n'< infile > outfile

ところで、あなたもこのようなことをしたいと思いますか?

オリジナル 変える
0 1 2 3 
bcd
#$@%

0a # 
1b $
2c @
3d%

私たちはできますawk

awk '{ for (i=1; i<=NF; i++) RtoC[i]= (i in RtoC?RtoC[i] OFS :"") $i; } 
    END{ for (i=1; i<=NF; i++) print RtoC[i] }' infile

これは、それぞれの同じフィールド番号の位置を連結し、END結果(たとえば、最初の列の最初の行、2番目の列の2番目の行など)を印刷します。もちろん、入力ファイルはメモリサイズに制限されます。

答え2

次のコマンドを使用することもできますfmt

~$ cat f
PAPER  TEAM  MANISH NISHA GARIMA JYOUTI
~$ fmt -1 f
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI

答え3

そしてGNUデータの混合:

$ datamash -W transpose <file
PAPER
TEAM
MANISH
NISHA
GARIMA
JYOUTI

答え4

以下を使用して、awk出力フィールド区切り記号(OFS)をレコード(行)区切り記号(RS)に設定します。

awk '{OFS=RS;$1=$1}1' file > file2

関連情報