各フィールドは1行を占めます。

各フィールドは1行を占めます。

テキストファイルがあります。

a   aa  aaa     b   bb  bbb     c   cc  ccc
d   dd  ddd     e   ee  eee     f   ff  fff
g   gg  ggg     h   hh  hhh     i   ii  iii
j   jj  jjj

どのように処理し、次の2列ファイルを取得できますか?

a   aa
aaa b
bb  bbb
c   cc
ccc d
dd  ddd
e   ee
eee f
ff  fff
g   gg
ggg h
hh  hhh
i   ii
iii j
jj  jjj

または、次の3列ファイル:

a   aa  aaa
b   bb  bbb
c   cc  ccc
d   dd  ddd
e   ee  eee
f   ff  fff
g   gg  ggg
h   hh  hhh
i   ii  iii
j   jj  jj

私はawkソリューションを好みますが、他のソリューションも大歓迎です。

ベストアンサー1

各フィールドを行と列の後に配置します。

各フィールドは1行を占めます。

ティー

tr -s ' ' '\n' < infile

grep

grep -o '[[:alnum:]]*' infile

sed

sed 's/\s\+/\n/g' infile

または、より携帯性に優れています。

sed 's/\s\+/\
/g' infile

アッ

awk '$1=$1' OFS='\n' infile

または

awk -v OFS='\n' '$1=$1' infile

柱状

生地

2列の場合:

... | paste - -

3列の場合:

... | paste - - -

など。

sed

2列の場合:

... | sed 'N; s/\n/\t/g'

3列の場合:

... | sed 'N; N; s/\n/\t/g'

など。

パラメータ

... | xargs -n number-of-desired-columns

xargs印刷に使用される場合は、/bin/echoオプションのように見えるデータがオプションとして解釈されるechoことに注意してください。

アッ

... | awk '{ printf "%s", $0 (NR%n==0?ORS:OFS) }' n=number-of-desired-columns OFS='\t'

交渉

... | pr -at -number-of-desired-columns

または

... | pr -at -s$'\t' -number-of-desired-columns

列(autogenパッケージから)

... | columns -c number-of-desired-columns

一般的な出力:

a   aa  aaa
b   bb  bbb
c   cc  ccc
d   dd  ddd
e   ee  eee
f   ff  fff
g   gg  ggg
h   hh  hhh
i   ii  iii
j   jj  jjj

おすすめ記事