次のようなファイルがあるとしましょう。
foo bar foo bar foo bar foo bar something useful"foo bar foo bar"
something useful
基本的に文字列を個別に取得する方法、独自のファイルに保存する方法、または個別に出力として表示する方法を知りたいです。
something useful
(33)前後には"
常に同じ数の文字があります。
答え1
この試み:
cut -c 34- | cut -d '"' -f1
最初のものはcut
最初の33文字を削除し、2番目はcut
最初の文字です"
。
答え2
これはgrep
Perl構文を使用するGNUバージョンです。
grep -oP '.{32}\K[^"]*'
最初の32文字を特定して削除\K
し、最初の文字まで残りの文字を印刷します"
。
答え3
Bashおよびパラメータ拡張式
$ nline="${line%%\"*}" #strip everything from first " seen to the end
$ echo "${nline:32}" #print everything from offset 32 to the end
答え4
sedを使用して操作を実行できます
sed -e 's/^.\{32\}//;s/".*//' filename.txt
これにより、最初の32文字が削除され、最初の文字以降のすべての文字が削除されます"
。
これらの置換はファイルのすべての行で発生します。特定の行に適用するには、次のようにします。
sed -e 'linenumber{s/^.\{32\}//;s/".*//;}' filename.txt
linenumber
ランダムな数字はどこにありますか?
linenumber{ # on the linenumber-th line, do the following
s/^.\{32\}// # remove the first 33 characters
s/".*// # remove the first quote and everything following it
}