テキストファイルがあります。
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