我有一個包含這樣的東西一堆TXT的文件:使用bash從文本文件中刪除符號
text_i_need_to_remove{text_i_need_to_retain}
text_i need_to_remove{text_i_need_to_retain}
...
如何花括號之前刪除文本(和大括號本身)和僅僅只有text_i_need_to_retain
保留?
我有一個包含這樣的東西一堆TXT的文件:使用bash從文本文件中刪除符號
text_i_need_to_remove{text_i_need_to_retain}
text_i need_to_remove{text_i_need_to_retain}
...
如何花括號之前刪除文本(和大括號本身)和僅僅只有text_i_need_to_retain
保留?
在行
:%s/.*{\|}$//g
月底從bash
殼刪除所有字符都{
或}
,您可以使用文字處理工具,如sed
和awk
。假設文件名爲ip.txt
1)與sed
,這與我們在vim
中使用的正則表達式非常相似。 -i
標誌允許進行更改,即修改輸入文件本身。
$ sed -i 's/.*{\|}$//g' ip.txt
2)同awk
,可以再次使用取代或在這種情況下,拆對大括號的線和僅使用第二列中。
$ awk -F'{|}' '{print $2}' ip.txt > tmp && mv tmp ip.txt
如果你有GNU awk
,對於就地編輯
$ gawk -i inplace -F'{|}' '{print $2}' ip.txt
作出改變當前目錄下的所有文件-i inplace
選項,使用
sed -i 's/.*{\|}$//g' *
或者,如果他們有共同的延伸,說.txt
,使用
sed -i 's/.*{\|}$//g' *.txt
非常感謝!它現在是有道理的:) – fremorie
你可以在vim中使用它;
:%s/^.*{// | %s/}$//
你也可以使用這個腳本;首先運行這個,如果每個方面都可以,請使用-i選項取消註釋sed,如下所示;
#!/bin/bash
for item in $(ls /dir/where/my/files/are)
do
sed -i 's/^.*{//;s/}$//' /dir/where/my/files/are/$item
done
sed -i;置換取代
或
僅限如下使用;
sed -i 's/^.*{//;s/}$//' /dir/where/my/files/are/*
:%s/^.*{\(.*\)}$/\1/
或在bash,sed 's/^.*{\(.*\)}$/\1/ foo.txt
\(.*\)
是送入\1
和看起來像一個笨拙殭屍對照組。
Perl可以用來做的所有文件替代:
perl -i -pe 's/.*{|}$//g' *.txt
這是一個非常基本的正則表達式的應用;數以千計的互聯網教程將教你如何。在Vim中:學習如何查看命令並導航內置的':help';它是全面的,並提供許多技巧。你不會像其他編輯一樣學習Vim,但如果你承諾不斷學習,它將證明它是一個非常強大和高效的編輯器。 –