我有许多带有制表符定界符的.csv文件,现在我想更改定界符。当我使用以下脚本时,它不会更改文件。请帮我编写脚本。
file_mask=$1
from_delim=$2
to_delim=$3
for i in `ls $file_mask*`
do
sed -i 's|$from_delim|$to_delim|g' $i
done
您需要对sed主体使用双引号,以便可以扩展shell变量:
sed -i "s|$from_delim|$to_delim|g" $i
更好的希望$ from_delim和$ to_delim都不包含管道。
另外,不要解析ls-根本不需要for循环:
sed -i "s|$from_delim|$to_delim|g" ${file_mask}*
验证差异:
file_mask=$1
from_delim=$2
to_delim=$3
sed -i.bak "s|$from_delim|$to_delim|g" $file_mask*
for f in $file_mask*; do
diff -q $f $f.bak >/dev/null
if (( $? != 1 )); then
echo "no changes made to $f"
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句