Bash 用单个空间替换文件中不同数量的空间
我有一个文件列表,其中的列由不同数量的空格分隔。如何使用sed或类似方法,使每一列由单个空格或制表符分隔 我试过:Bash 用单个空间替换文件中不同数量的空间,bash,sed,Bash,Sed,我有一个文件列表,其中的列由不同数量的空格分隔。如何使用sed或类似方法,使每一列由单个空格或制表符分隔 我试过: sed 's/ \+ /\t/g' file > tmp sed "s/\ /\t/g" tmp > file 但他抱怨道 line 526 did not have 11 elements 你可以用 内联sed sed -i.bak -e 's/ \+/ /g' fileName 你可以用 内联sed sed -i.bak -e 's/ \+/ /g' fi
sed 's/ \+ /\t/g' file > tmp
sed "s/\ /\t/g" tmp > file
但他抱怨道
line 526 did not have 11 elements
你可以用
内联sed
sed -i.bak -e 's/ \+/ /g' fileName
你可以用
内联sed
sed -i.bak -e 's/ \+/ /g' fileName
尝试:
这将占用一个或多个空格,并转换为表达式第二部分(“\t”)中的字符串。请尝试:
这将占用一个或多个空格,并转换为表达式第二部分(“\t”)中的字符串。假设您有一个名为“raw\u 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”的新文件时会产生结果。
输出到终端时的结果
使用的命令:
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
注意:每列由两个空格分隔。假设您有一个名为“raw\u 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”的新文件时会产生结果。
输出到终端时的结果
使用的命令:
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
将匹配空格字符选项卡和空格
因此,您的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
awk将直接轻松地处理空白
awk '$1=$1' infile # convert to single space
or
awk '$1=$1' OFS="\t" infile # convert to single tab
如果必须使用SED,字符类\s
将匹配空格字符选项卡和空格
因此,您的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
+欢迎来到这个网站。您也可以指定“-i”作为替换,谢谢!-i选项很有用,但请小心提供创建备份所需的后缀。很容易用-i单独覆盖单个副本。+1欢迎访问该网站。您也可以指定“-i”作为替换,谢谢!-i选项很有用,但请小心提供创建备份所需的后缀。很容易用-i单独覆盖一个副本。我在tr
命令中没有-s
选项,我的tr版本是tr(GNU coreutils)8.4
运行在centOS
,你能分享你的tr
版本吗?我在tr
命令中没有-s
选项,我的tr版本是tr(GNU coreutils)8.4
运行在centOS
上,您能分享您的tr
版本吗?