単一行の水平尾を分割する方法

単一行の水平尾を分割する方法

与えられた

ファイル1

1:b:c:4

ファイル2

1:3:47:8:aa:2

ファイル3

1:4:5:8:9:11:aaaaa:2:3:4:88:9:10

":"次の行の終わりを探したいと思います。各ファイルには常に1行しか含まれていません。

例えば

$ command file1
4
$ command file2
2
$ command file3
10

答え1

sed 's/.*://' file*

上記のコマンドは、sed各行の最後の行まですべてを削除します。::

答え2

awk -F: '{print $NF}' file*

この awk コマンドは、最後の列 (:(コロン) で区切られた) を出力します。

答え3

使用bash:

line=$(<file)
echo "${line##*:}"
  1. file変数を読みますline
  2. echo変数を選択し、##プレフィックスパターンに最も一致するものを削除します()。*:


そしてgrep

grep -ho '[^:]*$' file*

-o入力ファイルがある場合にのみ、オプション(一致する部分のみ印刷)が必要です。-h各一致の前にファイル名の印刷を抑制します。

関連情報