텍스트 파일에서 원하지 않는 줄 제거

텍스트 파일에서 원하지 않는 줄 제거

sed내가 필요한 것은 텍스트 파일에서 짝수 줄이나 코드를 삭제하는 것뿐입니다 . awk특별한 것은 없습니다. 텍스트 파일의 짝수 줄에서 관련 없는 데이터를 제거하면 됩니다.

답변1

간단히:

sed 'n;d' file

짝수 라인의 경우

sed '1!n;d' file

홀수 행의 경우.

GNU 구현을 사용하면 sed다음 구문을 사용할 수도 있습니다.

이상한:

sed '1~2d' file

심지어:

sed '2~2d' file

답변2

이와 같이 원하지 않는 텍스트 줄을 제거할 수 있습니다.

sed -i '/[REGEX]/d' <FILE> 

[REGEX]는 원치 않는 텍스트 줄과 일치하는 정규식이고 <FILE>텍스트를 제거할 파일의 이름은 어디에 있습니까? //d다음과 같이 삭제( ) 명령을 중첩 할 수 있습니다 .

sed '/[REGEX]/d ; /[REGEX]/d ; /[REGEX]/d'

예는 다음과 같습니다.

echo "a" > file ; echo "abcd" >> file 
sed -i '/^a$/d' file
cat file # => abcd

사용 중인 버전이 sed이 옵션을 지원하지 않는 경우 -i다음 명령을 사용하여 동일한 효과를 얻을 수 있습니다.

cat file | sed '/[REGEX]/d' > file_2 && cat file_2 > file && rm file_2



현명한 사람에게 한 마디

cat fileright back 의 출력을 리디렉션하면 file원하는 효과가 나타나지 않습니다. 실제로는 file완전히 잘립니다. 즉, 완전히 잘립니다.삭제 file.

그래서아니요이 작업을 수행:

cat file | sed '/[REGEX]/d' > file

답변3

이것은해결책:

홀수 행 삭제:

awk 'NR%2==0{ print $0 > "infile" }' infile

짝수 행 삭제:

awk 'NR%2{ print $0 > "infile" }' infile

위 명령은 관련 줄을 제거합니다.제자리에따라서 infile동일한 입력 파일에 출력을 쓸 때는 주의해야 합니다.

다음과 같이 다른 별도의 파일에 쓸 수 있습니다.

EvenLines이렇게 하면 짝수 줄을 포함하는 파일이 생성됩니다 .

awk 'NR%2==0{ print $0 > "EvenLines" }' infile

이것은 OddLines홀수 줄을 포함하는 파일을 생성합니다.

awk 'NR%2{ print $0 > "OddLines" }' infile

답변4


sed '0~2d' file

이 명령은 파일에서 짝수 번째 줄을 삭제하는 데 사용됩니다.

관련 정보