Text-Processing
第一行的最後一個字母和下一行的第一個字母
我有這樣的文本文件:
qwery 45 uiopbmc 6 uenja 9999 comxq 8
我想說:
mylist=['a','c'] if last letter in the line is 'a' (before the number) and the first letter in the next line is 'c', print both two lines.
結果:
uenja 9999 comxq 8
我知道 sed 中的第一行,例如“s/”,但我怎麼能說出數字前的最後一個字母和下一行的第一個字母?
sed -n '1N;/a .*\nc/p;N;D'
將報告包含
"a "
後跟以 . 開頭的行的行"c"
。也可以看看:
sed -n '1N;/a[^[:alpha:]]*\n[^[:alpha:]]*c/p;N;D'
匹配第一行
a
的最後一個字母¹ ,以及第一個**字母為的第二行c
。請注意,輸入如下:
xa 123 c1a 234 c2a 345
它同時報告:
xa 123 c1a 234
和
c1a 234 c2a 345
兩者都符合要求。
¹ 嚴格來說,儘管有字母名稱,但它不僅限於字母腳本中的字母,
[[:alpha:]]
匹配構成人類語言單詞的字元,無論它們是拉丁語或希臘語等字母腳本還是不像漢字……至少在 GNU 系統上,您會發現它還匹配 0123456789 以外的數字,以滿足衝突的 POSIX / C 標準要求:alnum = alpha + digit,但該數字僅限於 0123456789。