파일에서 부분 줄을 추출하는 방법

파일에서 부분 줄을 추출하는 방법

파일.txt:

hello:"hello"; my love; my world:"my is world"
Questions<<my:"475832">> data-addon="652256"---my lover :"987654321";;;Questions
heart!Questions

하지만 문자열 "data-addon=" 다음에 숫자를 가져오고 싶습니다.

예:

652256

명령을 사용할 수 있나요 awk?

답변1

사용이 더욱 편리해졌습니다 grep.

grep -Po 'data-addon="\K[^"]*' file

또는 출력을 변수에 저장합니다.

var=$(grep -Po 'data-addon="\K[^"]*' file)

답변2

샘플 데이터를 다른 이름으로 저장 manuel.txt하고 다음을 실행합니다.

awk '/data-addon/ {gsub(/^.*data-addon="/,"");gsub(/".*/,"");print}' manuel.txt

결과를 변수에 저장합니다.

myvar=$(awk '/data-addon/ {gsub(/^.*data-addon="/,"") ; gsub(/".*/,"") ; print}' manuel.txt)

sed에서는 더 쉽습니다.

sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt 
myvar=$(sed -n '/data-addon/ { s/^.*data-addon="// ; s/".*// p}' manuel.txt)

답변3

이 경우에는 를 사용하고 awk따옴표와 공백으로 단어를 나누고 필드를 반복합니다.

awk -F'[ "]*' \
'
{
  for (i=1;i<=NF;i++)
  {
    if ($i == "data-addon=")
    {
      print $(i+1)
      exit
    }
  }
}
' file.txt

화타이

답변4

다음은 원하는 작업을 수행해야 합니다.

cat file.txt | awk -F"data-addon=" '{print $2}' | awk -F\" '{print $2}' | awk NF

관련 정보