1. ホーム
  2. bash

[解決済み] awkシステムコール

2022-02-24 11:46:32

質問

awkを使いたいのですが system() 関数を使用して、いくつかのディレクトリを移動させることができます。

で処理したいファイルがあります。 awk 名前 file.cfg というように整理されています。

/path1 /path2 
/some_path /some_other_path 
and so on..

最初のパスと2番目のパスは空白で区切られています。 というわけで、こんな感じです。

awk '{system(mv -R $1" "$2)}' file.cfg

と表示されますが、うまくいかず

sh: 0/home/my_user/path1: No such file or directory

しかし file.cfg はこのように見えます。

/home/my_user/path1 /home/my_user/path2

の前に0がない。 /home . では、何が足りないのでしょうか?

解決方法は?

に与えたコマンドを引用する必要があります。 system :

awk '{system("mv -R " $1 " " $2)}' file.cfg

現在 mv -R は、変数mvの値からRの値を引いたものと解釈され、以下のようになります。 0 どちらも定義されていないからです。