sedを使用して、行の最初の「N」文字をどのように印刷しますか?


110

使用してsed最初の印刷する1つのライナー何であるn文字は?私は次のことをしています。

grep -G 'defn -test.*' OctaneFullTest.clj  | sed ....

回答:


209

使用しないでくださいsed、使用をcut

grep .... | cut -c 1-N

使用する必要がある場合sed

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'

2
実際、私が今取り組んでいるCygwinシステムでは、実行中にcut切断されませんsed
kqw 2016

またはsed -r 's/^(.{12}).*/\1/'
fedorqui 'SO stop harming' 2016

1
@fedorqui -rはLinuxでは利用できるようですが、Macでは利用できません。
Paul Tomblin

正確には、OSXでは使用できません。
fedorqui 'SO stop harming' 2016

1
FYI: cut -c 1-N(Nが数である)私のCygwinのインストールの作業をOS X、使用上(cygwinのV 2.6、Vカット8.25。。)sed -Eのではなくsed -r、他の場所で使用。
wrlee

45
colrm x

たとえば、最初の100文字が必要な場合:

cat file |colrm 101 

それは何年も前からあり、ほとんどのLinuxとbsd(確かにfreebsd)にあり、通常はデフォルトです。入力しなければならなかったことを思い出せませんapt-get install colrm


これは最初の50n文字を与えません。テキストのすべての行にn文字が
割り当てられ

そしてcolrm、utf8を理解します。
Skippy le Grand Gourou

9

grepを使用する必要もありません

例:

sed -n '/searchwords/{s/^\(.\{12\}\).*/\1/g;p}' file


4

最初のN文字を印刷するには、行末までN + 1文字を削除します。

$ sed 's/.//5g' <<< "defn-test"
defn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.