各行から特定の範囲の文字を抽出します。

各行から特定の範囲の文字を抽出します。

各行で10文字を選択する必要があります。このようなファイルがあります。

TestSampleSampleSampleSample
Test1Test2Testtest4Test10Test11
lksdnlkdod

次のように修正する必要があります。

 TestSample
 Tes1Test2T
 lksdnlkdod

答え1

cutを使用してファイル全体を1行ずつ処理できます。

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) }'
  • パールの使用:
# 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答え)。

関連情報