什麼是正則表達式,我可以寫在bash中解析一行並提取可以在兩行之間找到的文本| (這樣會是:ex:1:| hey | 2:| boy |),並將這些單詞保存在某種數組中?如何從bash中的一行中的兩個分隔符之間提取文本?
2
A
回答
2
不需要複雜的正則表達式。 「|」 上拆分,然後每第二個元素是你
#!/bin/bash
declare -a array
s="|hey| 2: |boy|"
IFS="|"
set -- $s
array=([email protected])
for((i=1;i<=${#array[@]};i+=2))
do
echo ${array[$i]}
done
輸出
$ ./shell.sh
hey
boy
用awk想要什麼
$ echo s="|hey| 2: |boy|" | awk -F"|" '{for(i=2;i<=NF;i+=2)print $i}'
hey
boy
+0
+1很好的使用IFS,set和()。但是,如果左右分隔符不同(例如,'<' and '>')並且順序有意義,或者分隔符是多字符(例如「 - 」),則此方法將不起作用。正則表達式的方法更一般/靈活,恕我直言。 – 2010-04-09 03:59:58
+0
使它更加靈活也不難。直到OP所要求的,它將保持原樣。 – ghostdog74 2010-04-09 04:17:43
0
使用sed -e 's,.*|\(.*\)|.*,\1,'
1
$ foundall=$(echo '1: |hey| 2: |boy|' | sed -e 's/[^|]*|\([^|]\+\)|/\1 /g')
$ echo $foundall
hey boy
$ for each in ${foundall}
> do
> echo ${each}
> done
hey
boy
0
在你自己的答案,你輸出的最後一對管(假設有一個上線兩個以上的管道)之間有什麼。
這將輸出的第一對之間有什麼:
sed -e 's,[^|]*|\([^|]*\)|.*,\1,'
這將輸出最外面的一間什麼(所以這將表明他們之間出現管道):
sed -e 's,[^|]*|\(.*\)|.*,\1,'
0
#!/bin/bash
_str="ex: 1: |hey| 2: |boy|"
_re='(\|[^|]*\|)(.*)' # in group 1 collect 1st occurrence of '|stuff|';
# in group 2 collect remainder of line.
while [[ -n $_str ]];do
[[ $_str =~ $_re ]]
[[ -n ${BASH_REMATCH[1]} ]] && echo "Next token is '${BASH_REMATCH[1]}'"
_str=${BASH_REMATCH[2]}
done
產量
Next token is '|hey|'
Next token is '|boy|'
相關問題
- 1. 如何提取Perl中兩個行分隔符之間的行?
- 2. 如何從兩個提取分隔符
- 3. 反覆提取文本文件兩個分隔符之間的線,巨蟒
- 4. 在兩個分隔符之間提取數據的DB2查詢
- 5. 提取兩個分隔符之間的數據
- 6. 在多個分隔符之間提取文本
- 7. 如何在包含空行的兩個分隔符之間剝離文本?
- 8. 提取NSString中兩個子字符串之間的文本
- 9. 提取分隔符之間的文本 - PHP
- 10. 提取兩個字符串之間的文本(命令行)
- 11. 如何從沒有固定分隔符的文本行中提取字段?
- 12. 如何使用sed提取分隔符之間的字符?
- 13. 從一個特殊字符分隔的NSString中提取兩個字符串
- 14. 使用SOH分隔符在bash中分割一行文本
- 15. 如何在兩個數字之間設置分隔符,而無需在Python中的同一行上設置兩個單詞之間的分隔符?
- 16. 提取分隔符之間的文本文件的行成一個列表的Python
- 17. 從一個沒有分隔符的字符串中提取excel
- 18. PHP:從兩個特定標籤之間的字符串中提取文本
- 19. 在兩個分隔符之間提取字符串的最可靠方法
- 20. 從xml和製表符分隔的文本中提取數據
- 21. 僅提取分隔符「/」之前的部分文本?
- 22. 你如何提取R中兩個字符之間的值?
- 23. 如何僅提取分隔符之間的數字?
- 24. 如何在bash中用多個分隔符分隔字符串
- 25. 如何從bash shell腳本中的一行中提取一個單詞
- 26. 使用bash在文本文件中提取4個標記之間的文本
- 27. 如何在Winform c#ListView中的兩行之間插入行分隔符?
- 28. 如何在bash中使用分隔符逐行合併兩個文件
- 29. 如何在列MySQL中的兩個值之間提取行?
- 30. 如何使用多個(嵌套)分隔符從文本中提取值
就是你們的榜樣「前:1:|哎| 2: |男孩|」一個樣本LINE解析或解析一行的結果?如果是後者,那麼會產生這些結果的樣本線是什麼? 我可以考慮一些方法,但它們取決於你的輸入是什麼樣子,哪種方法是「最好的」取決於你接下來用「數組」來做什麼。 – 2010-04-08 22:01:19
該示例是一個示例LINE。實際上這個例子可以用新的方式。 – syker 2010-04-08 22:02:32
我想要做的就是隻打印出一個特殊的格式化的順序(就像在兩者之間說逗號)並對其進行排序 – syker 2010-04-08 22:03:09