sed를 사용하여 줄의 처음 'N'문자를 어떻게 인쇄합니까?


110

사용 sed첫 번째 인쇄 할 수있는 하나의 라이너 무엇 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

또는 sed -r 's/^(.{12}).*/\1/'.
fedorqui 'SO stop harming'3

1
@fedorqui -r는 분명히 Linux에서 사용할 수 있지만 Mac에서는 사용할 수 없습니다.
Paul Tomblin 2016 년

정확히 OSX에서는 사용할 수 없습니다.
fedorqui 'SO stop harming''16

1
참고 : cut -c 1-N(N은 숫자입니다) 수행 , 사용 OS X에 (V 2.6, 컷 V 8.25 Cygwin에서..) 내 Cygwin에서 설치 작업을 sed -E하기보다는 sed -r다른 곳에서 사용.
wrlee

45
colrm x

예를 들어, 처음 100자가 필요한 경우 :

cat file |colrm 101 

수년 동안 사용되어 왔으며 대부분의 Linux 및 bsd (확실히 freebsd)에 있으며 일반적으로 기본적으로 제공됩니다. 입력해야했던 기억이 안 나apt-get install colrm .


이것은 처음 50n 문자를 제공하지 않습니다. 모든 텍스트 줄에 n 개의 문자를 제공합니다.
bsmoo

그리고 colrmutf8을 이해합니다.
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.