我正在嘗試使用 sed 從網站中提取名稱串列,但我不確定如何替換分隔它們的制表符。這段代碼:
curl -s "https://namnidag.se/?year=2022&month=9&day=12" | sed -nE -e "s#<div class='names'>([^<]*)</div>#\1#p" | html2text
給了我 9 月 12 日的名字,但它們用制表符分隔:
?sa ?sl?g
如果我更改 sed 腳本以用逗號和空格替換制表符,如下所示:
curl -s "https://namnidag.se/?year=2022&month=9&day=12" | sed -nE -e "s#<div class='names'>([^<]*)</div>#\1#" -e 's/\t/, /p' | html2text
它按預期作業:
?sa, ?sl?g
但是,如果我在只有一個名字的日子嘗試,例如 9 月 13 日:
curl -s "https://namnidag.se/?year=2022&month=9&day=13" | sed -nE -e "s#<div class='names'>([^<]*)</div>#\1#" -e 's/\t/, /p' | html2text
我沒有輸出;不過,在這種情況下,第一個沒有選項卡替換的 sed 腳本可以正常作業。我在這里做錯了什么?如果有幫助,我正在使用 GNU sed 4.8。
謝謝!
uj5u.com熱心網友回復:
您需要洗掉p
curl -s "https://namnidag.se/?year=2022&month=9&day=12" | sed -nE -e "s#<div class='names'>([^<]*)</div>#\1#p" | sed -e 's/\t/, /'
uj5u.com熱心網友回復:
curl -s "https://namnidag.se/?year=2022&month=9&day=12" > f1
cat > ed1 <<EOF
71W f2
q
EOF
ed -s f1 < ed1
cat f2 | tail -c 20 | head -c -6 > file
rm -v ./ed1
rm -v ./f2
這將為您提供名稱,無論是否有兩個;如果有,你可以用 cut 把它們分開。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/507864.html
