各行に、文字>と<の間に1つの単語が見つかった文が含まれているファイルがあります。例えば:
Martin went shopping at >Wallmart< and lost his wallet
French food >tastes< great
すべての行の ">"と "<"内にWordを出力するシェルから実行するコマンドを探しています。
前もって感謝します。
awk
の場合:
awk -F '[><]' '{print $2}' file
これは、フィールド区切り文字を>
または<
のいずれかに設定し、これら2つの文字の間にある2番目のフィールドを出力します。
sed
の場合:
sed 's|.*>\(.*\)<.*|\1|' file
これは、()を使用して、>
とその後ろに来るものと<
とその前に来るものの間にあるものを出力します。
出力
Wallmart
tastes
grep
はどうですか?
grep -oP "(?<=\>).*(?=<)" file
出力:
Wallmart
tastes
編集:
@Toby Speightコメントに続き、>と<の間に単語があると仮定して、他のコンテキストで>と<が一致しないようにするために、コマンドは
grep -oP "(?<=\>)\w+(?=<)" file
以下のコマンドで試してみましたが、うまくいきました
awk -F ">" '{print $2}' filename| sed "s/<.*//g"
出力
Wallmart
tastes
python
#!/usr/bin/python
o=open('filename','r')
for i in o:
k=i.split('>')[1].split('<')[0].strip()
print k
出力
Wallmart
tastes