이것은 EXPORTER_JAR_PATH
파일 끝까지 " "를 포함하는 모든 줄을 제거하려는 파일 입니다.
more ambari-agent.ini
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific
export EXPORTER_JAR_PATH=/tmp/hgt.yml
[server]
hostname=master.sys65.com
url_port=8440
secured_url_port=8441
connect_retry_delay=10
max_reconnect_retry_delay=30
EXPORTER_JAR_PATH
내 해결책은 다음과 같습니다. - 끝까지 포함하는 행에서 행을 제거하십시오.
sed '1,/EXPORTER_JAR_PATH/!d' ambari-agent.ini
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific
export EXPORTER_JAR_PATH=/tmp/hgt.yml
라인에서 볼 수 있듯이 -Export
EXPORTER_JAR_PATH=/tmp/hgt.yml
아직도 존재하는데, 우리가 어디서 잘못됐나요?
예상 출력
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific
답변1
sed '/EXPORTER_JAR_PATH/,$d' file
그러면 하위 문자열이 포함된 첫 번째 줄부터 EXPORTER_JAR_PATH
파일 끝까지( $
주소 파일의 끝)까지 모든 줄이 삭제됩니다.
이 명령의 목적은 라인 1과 문자열(포함)을 포함하는 라인 사이에 있지 않은 모든 라인을 삭제하는 것입니다. 즉, 하위 문자열이 포함된 행은 EXPORTER_JAR_PATH
삭제되지 않습니다.
또는 Paul_Pendant와 mosvy가 아래 댓글에서 지적했듯이,
sed -n '/EXPORTER_JAR_PATH/q;p' file
스크립트가 종료되는 줄에 p
도달할 때까지 각 줄을 명시적으로 인쇄합니다 . EXPORTER_JAR_PATH
이 -n
옵션은 일반 기본 출력을 비활성화하므로 문자열이 포함된 줄은 인쇄되지 않습니다. 이는 전체 파일을 읽을 필요가 없다는 장점이 있습니다 sed
(그러나 이 특별한 경우에는 파일이 너무 짧기 때문에 큰 차이가 없습니다).
awk
이에 상응하는 것은 다음과 같습니다.
awk '/EXPORTER_JAR_PATH/ { exit } { print }' file
아니면 더 짧게,
awk '/EXPORTER_JAR_PATH/ { exit }; 1' file