2017-02-28 3 views
1

これはシンプルであるようですが、検索に時間をかけすぎました。どのようにしてsedとregexを使って4番目の単語の後ろの行のすべての単語を取り除くことができますか?私はこの1 Regex to extract first 3 words from a stringような答えを試みたが、私は、Mac OSXを使用していますので、私は、コンテキストアドレスを取得bashを使ってsedやregexを使ってファイル内の行をトリミングする方法は?

19900101, This is a 
19091110, This is a 

がしたい

19900101, This is a title 
19091110, This is a really long title 

:から

例えば

エラー。

+0

あなたがリンクしているリソースは、私がよく知っている* * 'sed'バージョンではサポートされていない正規表現を使用しています。あなたはPerlを試すか、 "伝統的な"正規表現で '\ s'のようなものを移植可能に表現する方法を見つけ出すことができます。 (それはひどく難しいことではありません。リンクされた質問への回答を投稿します) – tripleee

答えて

3

これは簡単にcut使用して行われます。

cut -d ' ' -f 1-4 file 

19900101, This is a 
19091110, This is a 

またはawkを使用して:これはあなたのために働くかもしれない

awk '{NF=4} 1' file 

19900101, This is a 
19091110, This is a 
+1

これらはどちらも完璧に機能します!構文を説明してもらえますか? –

+0

awkコマンドは 'NF'(フィールドの数)を4に設定し、それ以降はすべてを破棄します。 'cut'コマンドはフィールドを' 1-4 'の位置から切断します。 – anubhava

0

(GNUのSED):

sed 's/\s*\S*//5g' file 

は、第五を削除しますか、行からもっと多くの単語。

関連する問題