파일.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