任务是读取包含字母和数字的文件。然后将字母放在Letters目录中的文本文件中,将数字放在数字目录中的不同文本文件中。我遇到的问题是我不知道如何识别文件中的字符串和整数。
我使用的文件包含:
723
Xavier
Cat
323
Zebra
这是我提出的代码。
#!/bin/bash
file = $1
mkdir Numbers
mkdir Letters
touch Numbers/Numbers.txt
touch Letters/Letters.txt
for x in $file; do
if [x == string];
then
echo x >> Letters/Letters.txt;
fi
if [x == integer];
then
echo x >> Numbers/Numbers.txt;
fi
答案 0 :(得分:0)
您的原始代码有很多语法错误。我建议你继续提交一个至少在语法上正确的代码。 无论如何,假设您不熟悉unix shell脚本,这里可以快速解决您的问题
#!/bin/bash
file=$1
mkdir Numbers
mkdir Letters
touch Numbers/Numbers.txt
touch Letters/Letters.txt
while read line
do
if [[ $line =~ [^0-9] ]]
then
echo $line >> Letters/Letters.txt
else
echo $line >> Numbers/Numbers.txt
fi
done < $file
答案 1 :(得分:0)
问题很模糊。
这解决了发布的问题,并处理混合的行
数字和字符串,(例如:&#34; a1b2c3 &#34;。),使用tee
和bash
流程替换,tr
删除所有不受欢迎的字符:
mkdir Numbers Letters
tee >(tr -d '[0-9]' > Letters/Letters.txt) \
>(tr -d '[a-zA-Z]' > Numbers/Numbers.txt) \
> /dev/null < inputfile
如果目标是移除所有数字的整行
或所有字母,请尝试grep
:
mkdir Numbers Letters
tee >(grep -v '^[0-9]*$' > Letters/Letters.txt) \
>(grep '^[0-9]*$' > Numbers/Numbers.txt) \
> /dev/null < inputfile