我正在尝试对txt文件的第二列进行一些数学计算,但有些行不是数字,我只想操作有数字的行。并保持其他行不变
txt文件如下
aaaaa
1 2
3 4
我该怎么做?
答案 0 :(得分:1)
在任何不包含任何字母内容的行中加倍第二列可能看起来有点像本机bash中的以下内容:
#!/bin/bash
# iterate over lines in input file
while IFS= read -r line; do
if [[ $line = *[[:alpha:]]* ]]; then
# line contains letters; emit unmodified
printf '%s\n' "$line"
else
# break into a variable for the first word, one for the second, one for the rest
read -r first second rest <<<"$line"
if [[ $second ]]; then
# we extracted a second word: emit it, doubled, between the first word and the rest
printf '%s\n' "$first $(( second * 2 )) $rest"
else
# no second word: just emit the whole line unmodified
printf '%s\n' "$line"
fi
fi
done
这从stdin读取并写入stdout,因此用法类似于:
./yourscript <infile >outfile
答案 1 :(得分:0)
非常感谢,这是我第二次使用这个网站,我发现它非常有用,可以很快得到答案
我也在下面找到答案
#!/bin/bash
FILE=$1
while read f1 f2 ;do
if[[$f1 != *[!0-9]*]];then
f2=`echo "$f2 -1"|bc` ;
echo "$f1 $f2"
else
echo "$f1 $f2"
fi
完成&LT; %FILE