![파일의 문자열을 일치시키는 방법은 문자열이 첫 번째 필드에 있는 경우에만 가능합니까?](https://linux55.com/image/116585/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%9D%BC%EC%B9%98%EC%8B%9C%ED%82%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%ED%95%84%EB%93%9C%EC%97%90%20%EC%9E%88%EB%8A%94%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
파일의 문자열을 일치시키는 방법은 문자열이 첫 번째 필드에 있는 경우에만 가능합니까?
param=hbase.tmp.dir
cat file | grep $param
"hbase.local.dir" : "${hbase.tmp.dir}/local",
"hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",
"hbase.zookeeper.property.dataDir" : "${hbase.tmp.dir}/zookeeper",
"phoenix.spool.directory" : "${hbase.tmp.dir}/phoenix-spool",
내 예상 결과는 다음과 같습니다
"hbase.tmp.dir" : "/var/lib/ambari-metrics-collector/hbase-tmp",
답변1
사용 awk
:
awk '($1=="PATTERN")' infile.txt
필드가 공백으로 구분되어 있으면 위의 내용이 정확합니다. 그렇지 않은 경우 -F
언급된 옵션을 사용할 수 있습니다.
변수에 PATTERN 일치를 설정한 경우 option을 사용하여 이를 awk에 알려야 합니다 -v
.
awk -v param="PATTERN" '($1==param)' infile.txt
로 PATTERN이 포함되어 있는지 여부에 따라 얻을 수도 있습니다 ~
.
awk -v param="PATTERN" '/$1 ~ param/' infile.txt
아니면 grep
사용할 수도 있습니다.
grep '^PATTERN.*[^:]'
답변2
입력 데이터가 JSON(예: 모양)인 경우 다음을 사용할 수 있습니다 jq
.
$ jq -r '."hbase.tmp.dir"' file.json
/var/lib/ambari-metrics-collector/hbase-tmp
분명히 어떤 종류의 복잡한 데이터 구조가 있으면 수정해야 할 수도 있습니다.