web-dev-qa-db-ja.com

ファイルの各行の最初の単語を削除するにはどうすればよいですか?

「file.txt」というファイル名を検討してください。以下が含まれます。

dove is a bird
tiger is an animal
cricket is a game.

期待される出力:

is a bird
is an animal
is a game.
2
Velu

cutを使用して実行するには

cut -f 2- -d ' ' file.txt > new_file.txt

「file.txtファイルからスペースを区切り文字として使用して、2番目以降のフィールドを指定し、出力をnew_file.txtに送信します」

6
ivanivan

sedの使用:

sed 's/[^ ]* //' list.txt
  • 最初のスペースまですべてを削除します
4
Siva

セッド付き

最初の単語を削除するには:sed -E "s,^[[:alnum:]]+ ,," list.txt

最初の文字を削除するには:sed -E "s,^[[:alnum:]],," list.txt

3
darxmurf

awkで:

awk '{ $1=""; print substr($0,2) }' file.txt
2
darxmurf

Perlの場合:

Perl -pe 's/.*? //'  input

Grepの場合:

grep -Po ' \K.*' input
1
JJoao

エド、マンを使用!

ed -s input <<< $'%s/^[^ ][^ ]* //\nw\nq'

または、ヒア文字列を使用:

printf '%s\n' '%s/^[^ ][^ ]* //' 'w' 'q' | ed -s input

これは、改行で区切られた3つのコマンドをedに送信します。

  1. %)行ごとにsearchを入力し、スペース以外の1つ以上の文字と末尾のスペースを何も置き換えません。検索パターンは、行の先頭で^と一致するようにアンカーされています
  2. writeファイルをディスクに戻す
  3. quit
1
Jeff Schaller

awkは、先行する空白も削除するため、最適です。そしてそれはエイリアス可能です:

エイリアスremovefirstword = "awk '{\ $ 1 = \"\"; print substr(\ $ 0,2)}'"

testhost:稼働時間

15:26:50 0日、14:42、1ユーザー、平均負荷:1.24、1.28、1.33

testhost:稼働時間|削除する

最大0日、14:42、1ユーザー、負荷平均:1.19、1.26、1.32

もちろん、他の正規表現ソリューションもこれを行うことができます。

0
Razzlephrazz