我有一列文件,其列中有不同数量的空格分隔的列。你可以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