替换 @@@ 和 NotApplicable 字符串并将输出重定向到其他文件?

替换 @@@ 和 NotApplicable 字符串并将输出重定向到其他文件?

我使用的是 IBM AIX,它没有太多支持,例如sed -ised with\t在我的情况下不起作用。

我想用NotApplicablea 替换替换字符串,single space ' '然后用@@@a 替换多字符分隔符tab delimiter,按指定顺序使用 awk 或 sed 单个命令。

我尝试使用 sed 如下,但它不起作用。无法在以下命令中添加搜索并用“ ”单个空格替换 NotApplicable。

sed 's/@@@/\t/g' file.csv > file.xls

样本数据。

cola@@@colb@@@colbc
test@@@test@@@test
test@@@NotApplicable@@@test
123@@@145@@@567
333@@@444@@@NotApplicable

cola    colb    colbc
test    test    test
test            test
123     145     567
333     444         

答案1

翻译吉尔斯的回答对于这种情况,那就是:

sed $'s/@@@/\t/g; s/NotApplicable/ /g' file.csv > file.xls

这使用 ANSI-C 引用来允许解释为\tTAB;引号内的其他内容都是现有sed命令。

答案2

可能有更明显的方法可以做到这一点,但在任何 UNIX 系统上生成任何字符的一种方法是使用 tr(1):

tab=`echo t | tr t '\011'`
sed "s/NotApplicable/ /g; s/@@@/$tab/g" file.csv > file.xls

注意双倍的命令周围的引号sed

相关内容