Bash:使用cat和tr替换使用逗号替换字符串的问题
问题描述:
我的目标是创建一个bash文件,该文件对大约16个文件中的行进行计数,每个文件都有一个日期,并将以下内容(16次)发送到.csv文件。Bash:使用cat和tr替换使用逗号替换字符串的问题
到目前为止,我已经成功地计算了线,但.csv文件是凌乱,需要进行修整,并做出适合CSV:例如: 1500 FNB_EgTrans_20171004.txt
我的目标是使它看起来像这样的:1500,EgTrans,20171004
有人能向我解释为什么我使用TR与预期猫不工作的下面的方法?谢谢。 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`
答
您可以更改
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}
'tr'翻译字符,而不是单词。就像它在手册页中所说的那样。 –
*检测到无用的猫*。是的,使用* sed *。 – 0andriy
在表达式'... |中tr'201'','