我具有此功能,我试图在行末添加“ MM”,以防行中不包含“ MM”,并且始终在行首打印它。 / p>
recursiveFindReq `pwd`/allReqTemp.txt
while read line; do
if [[ $line != *MM* ]]; then
echo $line MM >> temp2
else
echo $line >> temp2
fi
done < allReqTemp.txt
例如: 输入:
07/2018 08:00 09/07/2018 08:01 09:00 150
我希望:
07/2018 08:00 09/07/2018 08:01 09:00 150 MM
但是我得到了:
“ MM07 / 2018 08:00 09/07/2018 08:01 09:00 150”
在图片中可以看到
成功! 只花了我2个小时
while read -a line; do
if [[ ${line[*]} != *MM* ]]; then
line[6]=MM
echo ${line[0]} ${line[1]} ${line[2]} ${line[3]} ${line[4]} ${line[5]} ${line[6]} >> temp2
else
echo ${line[*]} >> temp2
fi
done < allReqTemp.txt
答案 0 :(得分:0)
不确定您要做什么,但这也许可以提供一些指导。
输入文件
$ cat file
1
2
3MM
4MM
5
6
这会产生
$ awk '{print $0 (/MM$/?"":"MM")}' file
1MM
2MM
3MM
4MM
5MM
6MM
将打印当前行($0
)和后缀(如果后缀尚未在行尾(/MM$/
)。请注意,后缀后将不允许有空格。
答案 1 :(得分:0)
尝试在处理每一行之前删除该行:
将此添加到您的代码中:删除行末字符:
${line/$'\n'}
while read line; do
new_line=${line/$'\n'}
if [[ $new_line != *MM* ]]; then
echo $new_line MM >> temp2
else
echo $new_line >> temp2
fi
done < file1`