Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 需要sed和awk命令的帮助吗?_Unix_Sed_Awk - Fatal编程技术网

Unix 需要sed和awk命令的帮助吗?

Unix 需要sed和awk命令的帮助吗?,unix,sed,awk,Unix,Sed,Awk,输入文件: O、 ff$1123.81,泰,20100608,jjj,13.180002 O、 gg,$1794.06,瑞,20100608,jjj,13.180008 O、 gg,$1794.06,瑞,20100608,jjj,13.180008 在我需要替换的输入文件中,如果有,,,出现在,,,之间,有人能帮我解决这个问题吗?类似的方法可能会奏效: sed -e 's/,,/, ,/g' inputfile 正如bash-o-logist所指出的那样,像,,这样的东西所期望的结果可能是,。

输入文件:

O、 ff$1123.81,泰,20100608,jjj,13.180002

O、 gg,$1794.06,瑞,20100608,jjj,13.180008

O、 gg,$1794.06,瑞,20100608,jjj,13.180008


在我需要替换的输入文件中,如果有,,,出现在,,,之间,有人能帮我解决这个问题吗?

类似的方法可能会奏效:

sed -e 's/,,/, ,/g' inputfile
正如bash-o-logist所指出的那样,像
,,
这样的东西所期望的结果可能是
。如果是这样,则可以使用该命令(运行该命令两次):


类似的方法可能会奏效:

sed -e 's/,,/, ,/g' inputfile
正如bash-o-logist所指出的那样,像
,,
这样的东西所期望的结果可能是
。如果是这样,则可以使用该命令(运行该命令两次):

纯bash脚本

#!/bin/bash
# tested on bash 4

while read -r line
do
    while [[ $line =~ ,, ]]
    do
        line=${line//,,/, ,}
    done
    echo "$line"
done < file
请注意,额外的while循环用于将后续的
更改为

纯bash脚本

#!/bin/bash
# tested on bash 4

while read -r line
do
    while [[ $line =~ ,, ]]
    do
        line=${line//,,/, ,}
    done
    echo "$line"
done < file


请注意,额外的while循环用于将后续的
更改为

我希望这只会影响一次。。我需要做整个文件这将工作的每一行。如果省略
g
,它将影响每行的第一个双逗号,而不是每行的每一对。@jcrshankar:我可能不理解你的问题,但sed脚本将替换文件中的所有实例。我不确定OP希望如何输出,但这只会改变
。因为可能存在
,,,
,所以输出将如下所示
。还有
。@bash-o-logist:这是一个很好的观点;你可能是对的。我不确定。我希望这只会影响一次。。我需要做整个文件这将工作的每一行。如果省略
g
,它将影响每行的第一个双逗号,而不是每行的每一对。@jcrshankar:我可能不理解你的问题,但sed脚本将替换文件中的所有实例。我不确定OP希望如何输出,但这只会改变
。因为可能存在
,,,
,所以输出将如下所示
。还有
。@bash-o-logist:这是一个很好的观点;你可能是对的。我不确定。是的,谢谢巴什。我希望这会有所帮助。我查了一下,再问一个好的。没有sed的纯bash。。。是的;)当[[$line=~,]]将要做什么时,请告诉我ksh中的等价语句?这只是为了检查是否还有更多的
。您也可以使用
case
if
语句进行检查。是的,谢谢bash。我希望这会有所帮助。我查了一下,再问一个好的。没有sed的纯bash。。。是的;)当[[$line=~,]]将要做什么时,请告诉我ksh中的等价语句?这只是为了检查是否还有更多的
。您也可以使用
case
if
语句进行检查。