我有一列文件,其列中有不同數量的空格分隔的列。你可以sed或類似這樣,每列由一個空格或製表符分隔?用單個空格替換文件中的不同數量的空格
我想:
sed 's/ \+ /\t/g' file > tmp
sed "s/\ /\t/g" tmp > file
但[R抱怨
line 526 did not have 11 elements
我有一列文件,其列中有不同數量的空格分隔的列。你可以sed或類似這樣,每列由一個空格或製表符分隔?用單個空格替換文件中的不同數量的空格
我想:
sed 's/ \+ /\t/g' file > tmp
sed "s/\ /\t/g" tmp > file
但[R抱怨
line 526 did not have 11 elements
比方說您有一個名爲「raw_file」有以下內部
COLUMN1 COLUMN2 COLUMN3 COLUMN4
I am a boy
Hello word
I see you
I am 5 years
How are you?
文本您可以使用命令文件:
sed 's/ \{1,\}/ /g' '/root/Desktop/raw_file' |column -s ' ' -t > '/root/Desktop/my_new_file'
結果時,輸出到一個新文件名爲「 my_new_file」
COLUMN1 COLUMN2 COLUMN3 COLUMN4
I am a boy
Hello word
I see you
I am 5 years
個結果時使用輸出到終端
命令:
sed 's/ \{1,\}/ /g' '/root/Desktop/raw_file' |column -s ' ' -t 2> /dev/null
結果:
COLUMN1 COLUMN2 COLUMN3 COLUMN4
I am a boy
Hello word
I see you
I am 5 years
注:每一列被兩個空格分隔。
awk將直接照顧空白的,容易
awk '$1=$1' infile # convert to single space
or
awk '$1=$1' OFS="\t" infile # convert to single tab
如果你必須使用SED,字符類\s
將匹配空白字符tab
和space
讓你的sed的代碼可以是固定的作爲
sed 's/\s\{1,\}/ /g' infile
or
sed 's/\s\{1,\}/\t/g' infile
如果你的sed支持-r
選項,
sed -r 's/\s+/ /g' infile
or
sed -r 's/\s+/\t/g' infile
乾杯!並感謝多個答案 – cianius 2014-12-06 01:14:39
'tr'命令中我沒有'-s'選項,我的tr版本是''tr'(GNU coreutils)8.4'在'centOS'上運行,你能分享你的'tr'版本嗎? – BMW 2014-12-07 01:14:34