grep と cut 区切り文字コマンド (bash シェル スクリプト UNIX) を使用する - そして、それを「逆にする」のですか? 質問する

grep と cut 区切り文字コマンド (bash シェル スクリプト UNIX) を使用する - そして、それを「逆にする」のですか? 質問する

次のテキストを含むファイルがあります:

puddle2_1557936:/home/rogers.williams/folderz/puddle2

grepコマンドを使いたい

grep puddle2_1557936

この部分だけを表示するには、cut コマンド (または必要に応じて別のコマンド) と組み合わせます。

/home/rogers.williams/folderz/puddle2

これまでのところ、これをやれば

 grep puddle2_1557936 | cut -d ":" -f1

すると表示されます

puddle2_1557936

では、区切り文字カット コマンドを「逆にする」方法はあるのでしょうか?

注: 解決策しなければならないまずは から始めましょうgrep puddle2_15579636

ベストアンサー1

文字列の右側の部分を表示するために区切り文字を変更する必要はありませんcut

-fコマンドのスイッチは、cut区切り文字 : で区切られた n 番目の要素なので:、次のように入力するだけです。

 grep puddle2_1557936 | cut -d ":" -f2

楽しみたい場合の別の解決策(少し調整してください):

使用:

grep -oP 'puddle2_1557936:\K.*' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'                                                                        
/home/rogers.williams/folderz/puddle2

またはまだ見回す

grep -oP '(?<=puddle2_1557936:).*' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'                                                                    
/home/rogers.williams/folderz/puddle2

または:

sed -n 's/.*puddle2_1557936:\([^:]*\).*/\1/p' <<<'puddle2_1557936:/home/rogers.williams/folderz/puddle2'                                                      
/home/rogers.williams/folderz/puddle2

または:

perl -lne '/puddle2_1557936:(.*)/ and print $1' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'                                                      
/home/rogers.williams/folderz/puddle2

または使用(感謝グレン・ジャックマン

ruby -F: -ane '/puddle2_1557936/ and puts $F[1]' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2

または:

awk -F'puddle2_1557936:' '{print $2}'  <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2

または:

python -c 'import sys; print(sys.argv[1].split("puddle2_1557936:")[1])' 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2

またはのみ使用:

IFS=: read _ a <<< "puddle2_1557936:/home/rogers.williams/folderz/puddle2"
echo "$a"
/home/rogers.williams/folderz/puddle2

または使用:

js<<EOF
var x = 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
print(x.substr(x.indexOf(":")+1))
EOF
/home/rogers.williams/folderz/puddle2

または使用:

php -r 'preg_match("/puddle2_1557936:(.*)/", $argv[1], $m); echo "$m[1]\n";' 'puddle2_1557936:/home/rogers.williams/folderz/puddle2' 
/home/rogers.williams/folderz/puddle2

おすすめ記事