鑑於命名的文件這樣的文本文件:如何在bash中爲每個文件的列提取子字符串?
AAA 3/4 2/2 3/5
BBB 3/4 2/3 3/3 6/7
CCC 4/4 7/9
我應該怎麼做才能各分數只是分子?如下所示:
AAA 3 2 2
BBB 3 2 3 6
CCC 4 7
謝謝。
鑑於命名的文件這樣的文本文件:如何在bash中爲每個文件的列提取子字符串?
AAA 3/4 2/2 3/5
BBB 3/4 2/3 3/3 6/7
CCC 4/4 7/9
我應該怎麼做才能各分數只是分子?如下所示:
AAA 3 2 2
BBB 3 2 3 6
CCC 4 7
謝謝。
$> cat text
AAA 3/4 2/2 3/5
BBB 3/4 2/3 3/3 6/7
CCC 4/4 7/9
想法是匹配任何分數,並從每一個只得到分子。所以,分數是(數字)/
(數字)。使用組很容易得到你想要的。
$> sed -r -e 's/([0-9]*)\/([0-9]*)/\1/g' ./text
AAA 3 2 3
BBB 3 2 3 6
CCC 4 7
這可能會爲你工作:
sed 's/\/[0-9]*//g' file
AAA 3 2 3
BBB 3 2 3 6
CCC 4 7
感謝您的答覆。這確實有用,但我不太瞭解代碼。你能解釋一下嗎? – user1224398 2012-02-27 18:43:42
這會查找正斜槓'\ /'(需要用反斜槓引用)後跟零個或多個數字的倍數('g'標誌)。 ''[0-9] *'並且用什麼都不用''替換它們''' – potong 2012-02-27 20:35:16
哦,去吧..非常棒的觸摸......再次感謝。 – user1224398 2012-02-27 20:41:33
爲什麼不'sed的 'S/[0-9] \ {1,\} !!摹!' text'? – Johnsyweb 2012-02-24 20:24:23
只是爲了便於閱讀。我不確定OP是否真的熟悉'sed'。 – 2012-02-24 20:26:18
感謝您的幫助。這個確實是可讀的。 – user1224398 2012-02-24 22:01:31