我使用的是 IBM AIX,它没有太多支持,例如sed -i
sed with\t
在我的情况下不起作用。
我想用NotApplicable
a 替换替换字符串,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 引用来允许解释为\t
TAB;引号内的其他内容都是现有sed
命令。
答案2
可能有更明显的方法可以做到这一点,但在任何 UNIX 系统上生成任何字符的一种方法是使用 tr(1):
tab=`echo t | tr t '\011'`
sed "s/NotApplicable/ /g; s/@@@/$tab/g" file.csv > file.xls
注意双倍的命令周围的引号sed
。