我有一个看起来像这样的文件,但更大:
xxxxxxx xxxxx xxxx
yyyyyyy yyyyy yyyy
zzzzzzz zzzzz zzzz
bbbbbbb bbbb
但是要大得多,我想比较第二列和第三列,只有前四位数我写的是这样的:
while IFS='' read -r line; do
a=${line:181:4}
b=${line:276:4}
str1="$a"
str2="$b"
# echo $a
# echo $b
# echo $str1
# echo $str2
if [[ "$str1" == "$str2" ]]
then
echo $line >> $1.diffs.txt
fi
done <$1
str *的原因是因为数字偶尔以0开头所以它将它们解释为八进制并给我一个错误,我的问题是$ 1.diffs.txt上的输出只包含1个空格,而不是他们都是。 IE
输出:
xxxxxxx xxxxx xxxx
yyyyyyy yyyyy yyyy
zzzzzzz zzzzz zzzz
答案 0 :(得分:1)
您可以使用awk
代替现有的shell脚本:
awk '{ if (substr($2,0,4) == substr($3,0,4)) { print $0 }}' $1 > $1.diffs.txt
默认情况下, awk
在空格上分隔,因此您可以与变量$2
和$3
进行比较,而不必手动定义子字符串位置