다음 내용이 포함된 텍스트 파일이 있습니다.
DESCRIPTION ENABLED
Tracker_EG32747257_0418_0618, {NAME => d, DATA_BLOCK_ENCODING => NONE, BLOOMFILTER => ROW, REPLICATION_SCOPE => 0, COMPRESSION => LZ4, VERSIONS => 100000, MIN_VERSIONS => 0, TTL => 2419200 SECONDS (28 DAYS), KEEP_DELETED_CELLS => false, BLOCKSIZE => 65536, IN_MEMORY => false, BLOCKCACHE => true} true
1 row(s) in 0.0340 seconds
DESCRIPTION ENABLED
Tracker_EG38863805_0418_0618, {NAME => d, DATA_BLOCK_ENCODING => NONE, BLOOMFILTER => ROW, REPLICATION_SCOPE => 0, COMPRESSION => LZ4, VERSIONS => 100000, MIN_VERSIONS => 0, TTL => 2419200 SECONDS (28 DAYS), KEEP_DELETED_CELLS => false, BLOCKSIZE => 65536, IN_MEMORY => false, BLOCKCACHE => true} true
1 row(s) in 0.0300 seconds
DESCRIPTION ENABLED
Session_EG32747257_0418_0618, {NAME => d, DATA_BLOCK_ENCODING => NONE, BLOOMFILTER => ROW, REPLICATION_SCOPE => 0, COMPRESSION => LZ4, VERSIONS => 1, MIN_VERSIONS => 0, TTL => 2419200 SECONDS (28 DAYS), KEEP_DELETED_CELLS => false, BLOCKSIZE => 65536, IN_MEMORY => false, BLOCKCACHE => true} true
1 row(s) in 0.0270 seconds
DESCRIPTION ENABLED
Session_EG38863805_0418_0618, {NAME => d, DATA_BLOCK_ENCODING => NONE, BLOOMFILTER => ROW, REPLICATION_SCOPE => 0, COMPRESSION => LZ4, VERSIONS => 1, MIN_VERSIONS => 0, TTL => 2419200 SECONDS (28 DAYS), KEEP_DELETED_CELLS => false, BLOCKSIZE => 65536, IN_MEMORY => false, BLOCKCACHE => true} true
1 row(s) in 0.0260 seconds....
이제 모든 "DESCRIPTION" 단어와 1을 모두 제거하고 싶습니다(1을 포함하는 단어 제외).
이 명령을 사용하고 있습니다.
sed 's/\(DESCRIPTION\|<1>\)//g'
모든 설명자를 삭제하고 파일의 숫자 1개도 모두 삭제합니다.
답변1
GNU를 사용하고 있는 것 같습니다 sed
(POSIX가 sed
정의되지 않음 \|
). 그런 다음 Perlish 단어 경계를 사용할 수도 있지만 특별하게 만들려면 이스케이프해야 합니다 <>
.
sed 's/\(DESCRIPTION\|\<1\>\)//g'
답변2
노력하다:
sed 's/^\(\<DESCRIPTION\>\|\<1\>\)//' infile
전역 옵션을 사용했고 g
1의 모든 항목을 제거했기 때문에 DESCRIPTION
동일한 작업을 수행합니다. 위에서 언급한 것처럼, ^
줄이 이것으로 시작하는 경우 1과 설명을 제거하려면 줄 시작 앵커만 필요합니다.