配列の最初の要素を読み込みます。

配列の最初の要素を読み込みます。
defaults read -g AppleLanguages

次のようなものを生成します。


円、
ドイツ

最初の要素(この場合は「en」)だけを抽出したいと思います。

defaults read -g AppleLanguages | awk '/\(/ , /,/'

ただし、awk には常に検索パターンが含まれます。 「en」だけを生成するにはどうすればよいですか?

ベストアンサー1

2行目だけを印刷します。これを行うには、次のようなさまざまなツールを使用できます。

  • sed

    defaults read -g AppleLanguages | sed -n '2s/,//p;' file 
    

    説明する:は、2「次のコマンドを2行目でのみ実行」を意味します。通常の出力を抑制します-n(明示的に指示しない限り、何も印刷されません)。置換(s///)はカンマを削除し、置換が/p発生した末尾に行を印刷します。

  • perl

    defaults read -g AppleLanguages | perl -ne 's/,// && print if $.==2'
    

    説明するs/,//:現在の行番号($.が2)の場合は、最初のカンマ()を削除してその行を印刷します。これは-n、「入力ファイルを1行ずつ読み、与えられたスクリプトを各行-eに適用することを意味します。

  • Unixツール

    defaults read -g AppleLanguages | head -n 2 | tail -n 1 | tr -d ,
    

    説明するhead -n 2最初の2行を印刷し、tail -n 1最後の行(つまり、ファイルの2行目)を印刷してtr -d ,カンマを削除します。

  • awk

    defaults read -g AppleLanguage | awk 'NR==2{sub(",","");print}' 
    

    説明する: NR==2{}「2行目の括弧内の内容のみを実行してください。gsub(",","")最初のカンマを削除してください。」という意味です。

おすすめ記事