如何使用 Bash 删除两个单词之间的逗号 (,)

如何使用 Bash 删除两个单词之间的逗号 (,)

如何去掉两个单词之间的逗号(,)?

如何将这两个单词放在两个不同的行中?

这是我的输入:

ent0
ent4
ent1,ent5
ent2,ent6
ent3,ent7
ent29,ent30

答案1

tr ',' '\n'

会将,输入文件中的所有 s 替换为换行符,这听起来像是您想要的。

答案2

使用tr

$  tr ',' '\n' < FILE
ent0
ent4
ent1
ent5
ent2
ent6
ent3
ent7
ent29
ent30

答案3

使用bash

#!/bin/bash
while IFS='' read -r line; do 
    echo "${line//,/$'\n'}";
done <infile.txt

或者sed

sed -e $'s/,/\\\n/g' infile.txt 

或者

sed 's/,/\
/g' infile.txt 

答案4

您可以cut按如下方式使用:

我不知道你的数据从哪里来。但我确信您可以将您的信息传送到cut

cat yourfile.data | cut -d, --output-delimiter ' ' -f 1,2

按照 man cut

...
-d, --delimiter=DELIM
       use DELIM instead of TAB for field delimiter
--output-delimiter=STRING
       use STRING as the output delimiter the default is to use the input delimiter
-f, --fields=LIST
       select only these fields;  also print any line that contains no delimiter character, unless the -s option is specified
...

但是,如果您需要添加进一步的逻辑,我建议您使用sed@RomanPerekhrest 所说的。您将有更灵活的方式使用强大的正则表达式来解析数据。在我看来,执行此操作的最佳正则表达式是:

'/^\s*\([^,]\+\)\s*,\s*([^,]\+\)\s*$/'

~ 0 个或多个空格后跟除逗号以外的任何内容,后跟 0 个或多个空格、逗号,0 个或多个空格后跟除逗号以外的任何内容,后跟 0 个或多个空格。

相关内容