我有几个固定文件,需要快速扫描它们,以便在字段159上出现字母L并打印。 例如:
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657BA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
12345 3253657LA00000000MMMKSNS
我尝试了grep -E '^.{21} L'
,但找不到180固定长度grep -E '^.{159} L'
答案 0 :(得分:1)
使用awk可以打印子字符串。有关语法,请参阅nim's答案。
while read line; \
do echo "$line" | awk '{print substr($0,21,1)}'| \
grep -q "L"; [ $? -eq 0 ] && \
echo "$line"; \
done < "${file}"
<强>输出:强>
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
12345 3253657LA00000000MMMKSNS
答案 1 :(得分:1)
你很亲密,
echo "123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657BA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
12345 3253657LA00000000MMMKSNS" | grep -E '^.{20}L'
<强>输出强>
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
123456ABCDEF23253657LA00000000MMMKSNS
12345 3253657LA00000000MMMKSNS
请注意,{20} L
之间的空格会占据该位置,而当您的L
位于第21位时,您会跳过20
个字符。
IHTH