파일의 문자열을 일치시키는 방법은 문자열이 첫 번째 필드에 있는 경우에만 가능합니까?

파일의 문자열을 일치시키는 방법은 문자열이 첫 번째 필드에 있는 경우에만 가능합니까?

파일의 문자열을 일치시키는 방법은 문자열이 첫 번째 필드에 있는 경우에만 가능합니까?

 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

분명히 어떤 종류의 복잡한 데이터 구조가 있으면 수정해야 할 수도 있습니다.

관련 정보