私はいくつかのファイルを持っています。それぞれのカラムとカラムごとに異なるセパレータ(コンマ、スペース、タブ)があります。私は、特定の列のすべての行の最初の10文字を削除する必要があります。例えば、sedの/ ..........//はこのトリックを行うことができますが、私が望むカラムを指定するにはどうしたらいいですか、ファイルのセパレータをどのように指定することができますか?おそらくawkでそれをやる方が簡単でしょうか? awkではカラムを指定する方法を知っていますが、最初の10文字を消去する方法はわかりません。ありがとう。ファイル内の文字を削除します(bash)。
-4
A
答えて
1
フロント除去機能などを定義区切り文字はFS
:
$ cat > test.in # \t below is really a tab
12345678901 2,3\t4
$ cat > test.awk
function ftrunc(str) { # this function removes up to 10 first chars of a named field
gsub(/^.{1,10}/,"",str)
return str
}
BEGIN {
FS="[, \t]" # look at me! look at me! look at me!
OFS="|"
}
{
print ftrunc($1),ftrunc($2),$3,$4
}
$ awk -f test.awk test.in
1||3|4
4
フィールドの最初の10個の文字を消去する方法をあなたの質問の最初の部分、1つの方法は、このようなものです:10文字以下で
$ echo 1234567890ABCDEF | awk '{$1=substr($1,11)}1'
ABCDEF
フィールドは空になってしまいます。
第二には、あなたが出力に同じ区切りを維持したいと仮定すると、フィールドセパレータを指定するには、それはBEGIN
ブロックを使用し、FS
とOFS
内蔵でawkの変数を設定するのが最善です。この例では
我々はカンマで区切られたレコードの第2フィールドから最初の10個の文字を削除します(タブ区切りの場合:BEGIN {FS=OFS="\t"}
)
$ echo field1,1234567890ABCDEF,field3 | awk 'BEGIN {FS=OFS=","} {$2=substr($2,11)}1'
field1,ABCDEF,field3
を
関連する問題
- 1. リスト内の反復文字列をbashで削除する
- 2. ファイル内のmysqlクエリの削除文字
- 3. ファイル内のBOM文字を削除します。
- 4. bashのファイル名から文字を削除する
- 5. bashのファイルから文字列を削除する方法
- 6. bashスクリプト内のtar.gzファイルを削除します
- 7. Bash:文字列から特定の文字までを削除する
- 8. 文字列内の隠し文字を削除する
- 9. Bashスクリプトは文字列でファイルの内容をテストします。
- 10. Bashはディレクトリ内のファイルを検索して削除しますが、ディレクトリは削除しません。
- 11. ファイル内のジャンク文字を削除する方法
- 12. ファイル内の^ H^H文字を削除するには?
- 13. txtファイル内の改行文字を削除する
- 14. ディレクトリ内の特殊文字でファイルを削除する
- 15. javascript文字列内のすべての文字を削除します
- 16. C文字配列内の重複する文字を削除します。
- 17. セル内の文字列から特定の文字を削除します。
- 18. 文字列内のフォントタグのみを削除します。
- 19. PHP - ループ内の最後の2文字を削除します
- 20. Javaの文字列内の文字を削除するには?
- 21. 文字列内の一連の文字を削除する
- 22. 文字列内の特定の文字を削除する
- 23. 文字列内のスペースを再帰的に削除します
- 24. CSV文字列内のタイトルを削除します。
- 25. bashシェルの文字列にコンマで空白を削除する
- 26. Bash:特定のファイルまで削除
- 27. 文字列内の空白文字を削除する
- 28. Cのファイルから文字を削除
- 29. Bashの文字列操作が望ましくない新しい行の文字を削除する
- 30. rubyファイル全体から隠し文字を削除します
例を挙げてお答えください。 – armandino
入力例出力。 –
awkは 'substr()'関数を利用できます。あなたは 'awk '{$ 3 = substr($ 3,1,10); print $ 0}'のようなことをすることができます(明らかにフィールド3を仮定します)。すべてのawk文字列関数が説明されている[この素敵なページ](https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html)をチェックしてください。 – JNevill