Bash:使用cat和tr来用逗号替换字符串

时间:2017-10-16 21:37:11

标签: bash shell unix sun

我的目标是创建一个bash文件,该文件计算大约16个文件中的行,每个文件都有一个日期,并将以下(16次)发送到.csv文件。

到目前为止,我已经设法计算了行数,但.csv文件很乱,需要修剪并适合csv:Ex: 1500 FNB_EgTrans_20171004.txt

我的目标是让它看起来像这样:1500,EgTrans,20171004

有人可以向我解释为什么我的 tr 使用 cat 的下方方法无法按预期工作?谢谢。 cat $reccnt | tr ' FNB_' ',' | tr '201' ',' < $reccnt

以下是需要详细说明的整个代码:

#!/bin/bash
cd /ssinput/NY_AML/
reccnt=ny_row_count.csv
activedate='100000'
if [ -e $reccnt ];
then
rm $reccnt
else
touch $reccnt
chmod 755 $reccnt
fi
ls  -t1 FNB*|head -15 |cut -c 13- > ny_activedate.txt #second tail or cut?
activedate=$(cat ny_activedate.txt)
echo $activedate
wc -l *$activedate | head -16 > $reccnt
reccnt="${reccnt##*( )}"
cat $reccnt | tr 'FNB' ',' | tr '201' ',' <  $reccnt`

1 个答案:

答案 0 :(得分:0)

您可以更改

inputfile=ny_row_count.csv
sed 's/ FNB_/,/g'   ${inputfile} > ${inputfile}.tmp
sed 's/_201/,201/g' ${inputfile}.tmp > ${inputfile}
rm ${inputfile}.tmp 

inputfile=ny_row_count.csv
sed -e 's/ FNB_/,/g' -e 's/_201/,201/g' ${inputfile} > ${inputfile}.tmp
mv ${inputfile}.tmp ${inputfile}

inputfile=ny_row_count.csv
sed 's/ FNB_/,/g; s/_201/,201/g' ${inputfile} > ${inputfile}.tmp
mv ${inputfile}.tmp ${inputfile}