数千行のデータを含むファイルがあります。各行は次のようになります。a:b:c:d
したがって、たとえば:
0.0:2000.00:2000.04:2000.02
すべてのaを1つのファイルに、bを2番目のファイルに入れたいなど。どうすればよいですか。
数千行のデータを含むファイルがあります。各行は次のようになります。a:b:c:d
したがって、たとえば:
0.0:2000.00:2000.04:2000.02
すべてのaを1つのファイルに、bを2番目のファイルに入れたいなど。どうすればよいですか。
一方通行。出力ファイルにはfileXという名前が付けられ、各列番号にXが付けられます。
infileにコンテンツが含まれていると仮定します。
0.0:2000.00:2000.04:2001.02
0.1:2002.00:2000.05:2003.02
0.2:2003.00:2002.04:2004.02
0.3:2001.00:2000.05:2000.03
0.3:2001.00:2000.04:2001.02
0.2:2001.00:2002.04:2000.02
awk
次のコマンドを実行します。
awk '
BEGIN {
FS = ":";
}
{
for ( i = 1; i <= NF; i++ ) {
print $i > "file" i;
}
}
' infile
出力ファイルを確認します。
head file[1234]
次の結果が得られます。
==> file1 <==
0.0
0.1
0.2
0.3
0.3
0.2
==> file2 <==
2000.00
2002.00
2003.00
2001.00
2001.00
2001.00
==> file3 <==
2000.04
2000.05
2002.04
2000.05
2000.04
2002.04
==> file4 <==
2001.02
2003.02
2004.02
2000.03
2001.02
2000.02
フラグを使用して-F:
、フィールドセパレータをに設定する必要があります:
。
を使用print
し> file
て、必要なファイルへの出力を取得する必要があります。
awk -F: '{ for (i = 1; i <= NF; i++) { file = "file." i; print $i > file; } }' input
(awk
Mac OS X 10.7.4では、ファイル名としての式は許可されていませんgawk
。許可されています。示されているソリューションは両方で機能します。)
[ IMNSHOが不当に間違っていた(現在はキャンセルされています。ありがとうございます)反対票に対抗するために与えられた宿題に対する回答!]
どうですか:
cat filename|cut -d ':' -f1 > a.txt
次に、2番目のフィールドに-f2と記述して、b.txtに入力します。