从每行中提取特定范围的字符

从每行中提取特定范围的字符

我需要从每行选择 10 个字符。我有一个这样的文件

TestSampleSampleSampleSample
Test1Test2Testtest4Test10Test11
lksdnlkdod

我需要修改它,使其看起来像:

 TestSample
 Tes1Test2T
 lksdnlkdod

答案1

您可以使用 cut 逐行处理整个文件:

cut -c -10 < inputfile

答案2

有多种方法可以做到这一点。

  • sed
# Posix Regex
sed -e 's/\(.\{10\}\).*/\1/'

# Extended Regex
sed -Ee 's/(.{10}).*/\1/'
  • awk
awk '{ print substr($0, 1, 10) }'
  • 使用 Perl:
# first way - classic one line
perl -ane 'print $1."\n" if /(.{10})/'

# second way - with field separator
perl -F"(.{10})" -ane 'print $F[1]."\n"'

或与cut(参见@gnp回答)。

相关内容