Linuxでは、sedを使用してCSVファイルのすべての行の2番目のフィールドをすべて変更したいと思います。とは別に最初の行(例:タイトル)私はそれを1行に使用するのではなく、sed -i '{$LINE_NUMBER ....'を使用して繰り返すことができます。できる方法があるかどうか疑問に思います。リング。
私もすべてを変えることができると思います。次に、次の行からこの特定の行に戻ります。
| Q1 | Q2 | Q3 |
| Name | Resource_ID | Key |
| Joseph | 343433| AGFD |
| Mary | 242355 | AREW |
答え1
あなたのデータを見なければ明確な答えを出すことはできませんが、あなたの説明に基づいて探しています2,${}
。たとえば、
$ seq 5 | sed '2,${s/$/foo/}'
1
2foo
3foo
4foo
5foo
{}
これは、2行目からファイルの終わりまでコードを実行することを意味します。ただし、awk
基本的に「フィールド」を処理できる他のツールを使用する方が良いでしょう。
答え2
あなたがしたいことのためには、awkがsedよりもほぼ確実に良い選択です。 2番目のフィールドを変更すると言うと、実際には3番目|
に区切られたフィールドを参照しているようです。この場合、次のようになります。
$ awk 'BEGIN{FS=OFS="|"} NR>1{$3=" whatever "} 1' file
| Q1 | Q2 | Q3 |
| Name | whatever | Key |
| Joseph | whatever | AGFD |
| Mary | whatever | AREW |